一、结构化查询语句sql
结构化查询语句分类 | 作用及常见关键词 |
---|---|
DDL | 定义和管理数据对象。 CREATE、DROP、ALTER |
DML | 用于操作数据库对象中锁包含的数据 。INSERT、UPDATE、DELETE |
DQL | 用于查询数据库数据 。SELECT、FROM、WHERE |
DCL | 用于设置/更改数据库用户权限。 GRANT、REVOKE、COMMIT、ROLLBACK |
二、DDL语句常见用法
2.1数据库相关
创建数据库
create database if not exists 数据库名;
完整版
create database 数据库名 set 编码方式 collate 排序规则
删除数据库
drop database 数据库名;
drop database if not exists 数据库名;
查看所有数据库
show databases;
选中指定数据库(使用):
use 数据库名;
mysql> use mysql;
Database changed
mysql>
查看当前所用的数据库
select databse();
mysql> select database();
+------------+
| database() |
+------------+
| kb21 |
+------------+
1 row in set (0.00 sec)
mysql>
2.2表相关
创建表
create table if not exists 表名
(字段1(类型)
,字段2(类型)
);
mysql> create table `teacher`(`id` int (10),`name` varchar(32));
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql>
更完整的建表
mysql> create table if not exists teacher(`id` int(10) primary key auto_increment,`name` varchar(32) not null comment "老师姓名",`age` int not null comment "老师年龄",`tel` varchar(32) not null default "021-43579802" comment "练习电话",`email` varchar(255),`school` varchar(100) default "南京大学");
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql>
primary key 主键
auto_increment 自增(可以不用输入了会自动增长1)
not null 该值不能为空
comment 注释
查看表结构
desc 表名;
mysql> desc teacher;
+--------+--------------+------+-----+--------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+--------------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(32) | NO | | NULL | |
| age | int | NO | | NULL | |
| tel | varchar(32) | NO | | 021-43579802 | |
| email | varchar(255) | YES | | NULL | |
| school | varchar(100) | YES | | 南京大学 | |
+--------+--------------+------+-----+--------------+----------------+
6 rows in set (0.00 sec)
mysql>
查看建表语句
show create table 表名;
show create table teacher;
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| teacher | CREATE TABLE `teacher` (
`id` int DEFAULT NULL,
`name` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql>
查看当前数据库中所有的表
show tables;
mysql> show tables;
+----------------+
| Tables_in_kb21 |
+----------------+
| stu |
| teacher |
+----------------+
2 rows in set (0.01 sec)
mysql>
删除表
drop table 表名;
drop table if exists 表名;
mysql> drop table if exists stu;
Query OK, 0 rows affected (0.03 sec)
mysql>
查看表
select * from 表名
mysql> select * from teacher;
+----+------+-----+--------------+-----------+--------------+
| id | name | age | tel | email | school |
+----+------+-----+--------------+-----------+--------------+
| 1 | zls | 29 | 021-43579802 | NULL | 南京大学 |
| 2 | zls | 29 | 15815624332 | lj@qq.com | 清华大学 |
+----+------+-----+--------------+-----------+--------------+
2 rows in set (0.00 sec)
mysql>
设置引擎类型
创建表 engine=MyISAM;
DML语句常见用法
插入语句
insert into 表名(字段) values(值);
插入数据,如果该字段设置为not null(不允许为空),则必须设置值
mysql> insert into stu(id,name) values(1,'zs');
Query OK, 1 row affected (0.01 sec)
mysql>
修改表名
rename
alter table 旧表名 rename as 新表名;
mysql> alter table demo01 rename as demo1;
Query OK, 0 rows affected (0.01 sec)
mysql>
修改字段
change
alter table 要修改的表名 change 要修改的字段 字段类型 …;
mysql> alter table demo1 change name uname varchar(50) not null default "未知";
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
新增列
add
alter table 要修改的表名 add 新增字段名 字段类型 …;
mysql> alter table demo1 add upwd varchar(50) not null default "123456";
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
删除列
drop
alter table 要修改的表名 drop 要删除的列(字段名);
mysql> alter table demo1 drop upwd;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
三、数据值和列类型
列类型
规定数据库中该列存放的数据类型
分为:
- 数值类型
- 字符串类型
- 日期和时间值类型
- null值