Mysql基础入门-SQL_DDL语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql基础入门-SQL_DDL语句相关的知识,希望对你有一定的参考价值。

技术分享

一、mysql数据库介绍:

    mysql数据库属于关系型数据库,关系型数据库是指采用关系模型来组织数据的数据库,似于Excel函数关系表。保持数据的一致性是关系型数据库的最大优势

关系型数据库瓶颈:

1.高并发读写硬盘I/O瓶颈;

2.对于关系型数据来说在一张海量数据表中查询效率是非常低的;

3.横向扩展困难,当一个应用系统用户量访问与日俱增的时候数据库没有办法像web server那样简单的通过添加更多的硬件或者节点来扩展和提供负载能力。

对于并发量不高及数据量较小的应用系统mysql还是占有很大优势,且目前mysql属于开源软件,且目前mysql的衍生数据库mariadb也正在快速发育中。

二、mysql基础入门:

SQL

sql:用户与数据库交付语言,被称为sql,sql是 Structured Query Language 结构话查询语言简称,是关系型数的数据库应用语言;

sql分类

DDL:数据定义语句

这些语句定义了不同数据段,数据库,列,表,索引等数据库对象。常用关键字包括create ,drop ,alter


DML:数据操纵语句

用于添加、删除、更新、、和查询数据库记录、常用语句关键字包括:insert、delete、update、select


DCL:数据控制语言

用于控制不同数据段之前的许可和访问级别语句,这些语句定义了数据库、表、字段、用户访问、权限和安全级别,主要的语句关键字包括grant、revoke。



DDL语句

DDL 是数据定义的缩写,简单来说就是对数据库内部对象进行创建、删除、修改等操作的语言,与DML的区别是DML只是对表内部数据进行操作,而不会涉及到定义结构的修改更不会涉及其他对象,DDL有数据库管理员使用。



库操作


1.数据库创建

启动数据库连接到mysql服务器使用

[[email protected] ~]# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.


  • 当输入一条命令要其执行后面加上;或者\g结束,如果不添加默认为换行继续输入命令。

  • 使用help;或者\h命令来获取帮助,通过\c命令来清除命令行buffer。


数据库创建语法如下:

CREATE DATABASE DBNAME;

例如:

mysql> CREATE DATABASE liaodb;
Query OK, 1 row affected (0.00 sec)

Query OK 表示创建成功,(DML和DDL所有的操作不包括select操作成功后都会显示 Query OK)

1 row affected 表示操作只影响了一行记录;

(0.00 sec)表示操作执行的时间


2.查看数据库

语法:

SHOW DATABASES;

mysql> show DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| liaodb             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)


默认存在的数据:

information_schema 数据对象信息存储,例如用户表信息。

mysql 存储了系统的用户权限等信息

test系统自动创建的测试数据库,所有用户都可以使用;


3.选择数据库

语法:

USE DBNAME;

mysql> USE mysql;
Database changed


4.删除数据库

删除数据语法

drop database DBNAME;

删除我们刚刚创建的数据库liaodb

mysql> drop database liaodb;
Query OK, 0 rows affected (0.00 sec)

注:

删除数据库谨慎操作,默认删除数据库后下面的表会一起被删除。





表操作



1.创建表

语法

CREATE TABLE TABLENAME(column_name_1 colemn_type_1 constraints,olumn_name_2 colemn_type_2 constraintsolumn_name_3 colemn_type_3 constraints)

column_name_1 是列的名字;column_type是列的数据类型;constraints是列的约束条件。

下面创建一个最常见的普通班级统计表

表包括name,age,sex,字段类型使用varchar(10) ,date ,varchar(1)

mysql> create table class_one(name varchar(10),age INT(3),sex varchar(1)); 
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| class_one      |
+----------------+
1 row in set (0.00 sec)


2.查看表的定义

 语法:

 DESC TABLENAME;

mysql> DESC class_one;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(10) | YES  |     | NULL    |       |
| age    | int(3)      | YES  |     | NULL    |       |
| sex    | varchar(1)  | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

 查看更为详细的表定义信息

show create table tablename \G;
mysql> show create table class_one \G;
*************************** 1. row ***************************
       Table: class_one
Create Table: CREATE TABLE `class_one` (
  `name` varchar(10) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  `sex` varchar(1) DEFAULT NULL,
ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
ERROR: 
No query specified


\G选项的含义是使得记录能够按照字段竖向排列。


3.删除表

DROP TABLE TABLENAME;
mysql> DROP TABLE class_one;
Query OK, 0 rows affected (0.00 sec)


4.修改表


1)修改表类型语法如下:

ALTER TABLE tablename MODIFY[COLUMN] column_definition [FIRST|AFTER col_name]

例如:将之前制作的class_one表中的name字段类型修改为改为verchar(20)

mysql> alter table class_one modify name varchar(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> show create table class_one \G;
*************************** 1. row ***************************
       Table: class_one
Create Table: CREATE TABLE `class_one` (
  `name` varchar(20) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  `sex` varchar(1) DEFAULT NULL,
  `deptno` int(2) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
ERROR: 
No query specified


2)增加表字段语法如下

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name]

FIRST|AFTER

定义新增的一条字段放置在那条字段前FIRST或者后AFTER

例如在class_one表中添加一条 fraction

mysql> alter table class_one add column fraction int(3);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_one;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| name     | varchar(15) | YES  |     | NULL    |       |
| age      | int(3)      | YES  |     | NULL    |       |
| sex      | varchar(1)  | YES  |     | NULL    |       |
| fraction | int(3)      | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

3)删除表中字段语句如下

ALTER TABLE tablename drop [COLUMN] column_definition [FIRST|col_name]

例如将class中fraction和deptno字段删除

mysql> desc class_one;
+----------+------------+------+-----+---------+-------+
| Field    | Type       | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+-------+
| name     | varchar(6) | YES  |     | NULL    |       |
| age      | int(3)     | YES  |     | NULL    |       |
| sex      | varchar(1) | YES  |     | NULL    |       |
| fraction | int(3)     | YES  |     | NULL    |       |
+----------+------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> alter table class_one drop column fraction;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> alter table class_one drop column deptno;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_one;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name  | varchar(6) | YES  |     | NULL    |       |
| age   | int(3)     | YES  |     | NULL    |       |
| sex   | varchar(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)


4)字段改名语法如下

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST\AFTER col_name]

例如将age字段更改为age1,字段类型更改为int(2);

mysql> alter table class_one change column age age1 int(2);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_one;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name  | varchar(6) | YES  |     | NULL    |       |
| age1  | int(2)     | YES  |     | NULL    |       |
| sex   | varchar(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

5)更改字段排序

语法关键字

FIRST|AFTER

FIRST 表示放在某字段前

AFTER 表示放在某字段后

示例:新增一个字段为age 并且将其放在name字段后

mysql> alter table class_one add column age int(4) after name;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_one
    -> ;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name  | varchar(6) | YES  |     | NULL    |       |
| age   | int(4)     | YES  |     | NULL    |       |
| sex   | varchar(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改字段name将其放到sex字段后

mysql> desc class_one;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name  | varchar(6) | YES  |     | NULL    |       |
| age   | int(4)     | YES  |     | NULL    |       |
| sex   | varchar(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> alter table class_one modify name varchar(6) after sex;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc class_one;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| age   | int(4)     | YES  |     | NULL    |       |
| sex   | varchar(1) | YES  |     | NULL    |       |
| name  | varchar(6) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.01 sec)


6)更改表名语法

ALTER TABLE tablename RENAME [TO] new_tablename

例如将class_one 改成成class_1

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| class_one      |
+----------------+
1 row in set (0.00 sec)
mysql> alter table class_one rename class_1;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables ;
+----------------+
| Tables_in_test |
+----------------+
| class_1        |
+----------------+
1 row in set

本文出自 “笔记” 博客,请务必保留此出处http://snowbamboo1.blog.51cto.com/9291858/1862399

以上是关于Mysql基础入门-SQL_DDL语句的主要内容,如果未能解决你的问题,请参考以下文章

入门MySQL——基础语句篇

MySQL入门

MySQL基础入门学习13存储过程

MySQL从入门到精通高级篇MySQL的SQL语句执行流程

MySQL从入门到精通高级篇MySQL的SQL语句执行流程

mybatis入门基础----动态SQL