mysql-sq;语句

SQL分类

1、DDL语句:数据定义语句,用来定义不同的数据段、数据库,表,列,索引等数据表对象,常用语句:create、drop、alter等。2、DML语句:数据操作语句,用于添加、删除、更新和查询数据库记录:insert,delete,update,select.3、DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句:grant、revoke

DDL语句

1.create创建数据库

mysql> create database test1;Query OK, 1 row affected (0.00 sec)

如果创建时,数据库已经存在则会提示:

mysql> create database test1;ERROR 1007 (HY000): Can‘t create database ‘test1‘; database exists

这时可以使用show命令来查看系统中有哪些数据库

mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || db1 || db2 || db3 || homework || mysql || mysqlbook || performance_schema || test || test1 |+--------------------+10 rows in set (0.00 sec)

2.删除数据库

语法drop + datavase + 数据库名:

mysql> drop database test1;Query OK, 0 rows affected (0.02 sec)

注意,删除数据库时会将数据库下所有的表连同删除

3、创建表

创建表语法:

create table 表名(字段名 数据类型 约束条件,字段名 数据类型 约束条件,字段名 数据类型 约束条件,)

例如创建一个emp表,字段:ename、hiredate、sal,数据类型:varchar(10)、date、int(2)(后面会介绍数据类型)

create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));

创建完成后可以输入以下命令查看表结构:
desc 表名

mysql> desc emp;+----------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+---------------+------+-----+---------+-------+| ename | varchar(10) | YES | | NULL | || hiredate | date | YES | | NULL | || sal | decimal(10,2) | YES | | NULL | || deptno | int(2) | YES | | NULL | |+----------+---------------+------+-----+---------+-------+4 rows in set (0.01 sec)

但是desc命令显示的信息不是最全的,全面信息可以用如下命令:
show create table +表名\G;

mysql> show create table emp\G;*************************** 1. row *************************** Table: empCreate Table: CREATE TABLE `emp` ( `ename` varchar(10) DEFAULT NULL, `hiredate` date DEFAULT NULL, `sal` decimal(10,2) DEFAULT NULL, `deptno` int(2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)

\G是使记录竖向排列

4、删除表

删除表的命令如下:
drop table 表名:
列如删除数据库中的emp表

drop table emp;

5、修改表

修改表设计到多方面,修改字段,删除字段、修改数据、修改数据类型以及约束条件等。
表的修改都使用到alter table语句

5.1 修改表字段的数据类型

语法:
alter table 表名 modify 字段名 数据类型 约束条件;
例如修改表emp的ename字段定义,把varchar(10)改为varchar(20):

mysql> alter table emp modify ename varchar(20);Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0#查看表结构mysql> desc emp;+----------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+---------------+------+-----+---------+-------+| ename | varchar(20) | YES | | NULL | || hiredate | date | YES | | NULL | || sal | decimal(10,2) | YES | | NULL | || deptno | int(2) | YES | | NULL | |+----------+---------------+------+-----+---------+-------+4 rows in set (0.01 sec)#ename字段的数据类型以及修改

5.2增加表字段

语法:
alter table 表名 add 字段名 数据类型 约束条件 [first/after 表名];
例如在emp中增加字段age,数据类型为int(3):

alter table emp add age int(3);mysql> alter table emp add age int(3);Query OK, 0 rows affected (0.03 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> desc emp;+----------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+---------------+------+-----+---------+-------+| ename | varchar(20) | YES | | NULL | || hiredate | date | YES | | NULL | || sal | decimal(10,2) | YES | | NULL | || deptno | int(2) | YES | | NULL | || age | int(3) | YES | | NULL | |+----------+---------------+------+-----+---------+-------+5 rows in set (0.01 sec)

可以在语句后面加first为加到表首字段,after+字段名表示在谁后面

5.3删除表字段

语法:alter table emp drop 字段名;
举例:删除age字段

mysql> alter table emp drop age;Query OK, 0 rows affected (0.03 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> desc emp;+----------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+---------------+------+-----+---------+-------+| ename | varchar(20) | YES | | NULL | || hiredate | date | YES | | NULL | || sal | decimal(10,2) | YES | | NULL | || deptno | int(2) | YES | | NULL | |+----------+---------------+------+-----+---------+-------+4 rows in set (0.01 sec)

5.4字段改名

语法:alter table 表名 change 字段名 新字段名 [约束条件]:

alter table emp change age age1 int(4);

注意:change 和modify都可以修改表的定义,不同的是change后面需要两次列表(新旧)

5.5修改表名

语法: alter table 表名 rename 新表名;

alter table emp rename emp1;

相关文章