三、SQL基础语法
SQL的分类
·DDL:(数据定义语言) (Data Definition Language) 对库和表进行操作
create 创建库、表、索引、视图、用户
alter 修改库字符集、表结构、索引、视图、用户、密码
drop 删除各种结构、库、表、视图、索引、用户
show 显示库、表
·DML:(数据操纵语言) (Data Manipulation Language) 对表中的数据进行添加、修改、删除
insert 在表中插入、添加数据
update 修改表中的内容
delete 删除表中的数据
·DQL:(数据查询语言) (Data Query Language) 对表中数据进行查询操作
select 根据条件查询内容、可以配合函数使用
·DCL:(数据控制语言) (Data Control Language) 对数据库进行权限管理、用户管理、事务管理
use 切换数据库
grant 权限设置
revoke 移除权限
DTL (事务控制语言) (Data Transaction Language)
commit 事务提交
rollback 回滚
SQL的关键字
库操作
# 查看所有库
show databases;
# 查看完整的创库语句(\G是按列排列)
show create database test\G;
下面是完整的创建库的语句:
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
# 创建库:
create database 库名 charset utf8mb4;
Navicat:MySQL-01右键新建数据库——起个名称test——字符集utf8mb4——排序规则utf8mb4_unicode_ci(也可以默认)——确认(或者执行SQL语句效果一样);
# 删除库:drop database 库名;
Navicat:右键——删除数据库
# 修改库的字符集:alter database 库名 charset utf8mb4;(改错容易乱码)
表操作
# 查看表(要先进库里use 库名)
查看库中所有的表:show tables;
查看表的结构:desc 表名;
# 创建表
CREATE TABLE `mysql`.`Untitled` ( `mysql`是库名,`Untitled`是表名)
`id` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`username` varchar(32) NOT NULL COMMENT '用户名',
`password` varchar(128) NULL COMMENT '密码',
`birthday` date NULL COMMENT '生日',
`gender` enum('男','女','未知') NOT NULL COMMENT '性别',
`phone` varchar(11) NOT NULL COMMENT '手机号',
`address` varchar(255) NULL COMMENT '地址',
`email` varchar(255) NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
);
# 查看创建表的完整语句
show create table user_info;
会出现(如果不小心删掉,可以通过复制完整语句、结尾加上;来创建表)
# 查看表结构
desc user_info;
Field字段(列名):字母、数字、下划线、不要和mysql关键字冲突,不要有特殊符号和空格。
Type数据类型:数字类型、字符类型、日期时间类型、二进制数据、json等……
Null是否可为空:YES可为空,NO不可为空,Not Null不能为空
Key键:主键、外键、唯一(都具有唯一性)、索引、非空等各种约束条件
Default默认值:在insert时,没有设置内容时,自动添加的内容
Extra扩展:例如auto_increment(自动增长,一般用于序号自动+1)
# 删除表:drop table 表名;
# 修改表的结构:alter
# 修改表名
alter table 原始表名 rename to 新的表名;
# 修改字段名和字段类型
> 修改列的属性:change,modify(修改)
alter table user_info change birthday b_day date;
alter table user_info change b_day b_day datetime;
eg:输入alter table user_info change gender sex enum('F','M','N');
# 添加新的字段
alter table user_info add age tinyint unsigned;
> 如果你需要指定新增字段的位置,关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)
alter table user_info add address varchar(64) after birthday;
# 删除已有的字段
alter table user_info drop age;