SQL
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库 查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
SQL的分类
- 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列 等
- 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新
- 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录
- 数据控制语言:简称DCL(Date Control Language),用来定义数据库的访问权限和安全级别, 及创建用户
DDL操作 数据库
创建数据库
创建指定名称的数据库,并且指定字符集(一般都 指定utf-8)
create database 数据库名 character set 字符集;
CREATE DATABASE db1_1 CHARACTER SET utf8;
查看/选择数据库
- use 数据库 use 数据库
- select database(); 查看当前正在使用的数据库
- show databases; 查看Mysql中 都有哪些数据库
- show create database 数据库名; 查看一个数据库的定义信息
删除数据库
drop database 数据库名
DDL 操作 数据表
常用的数据类型
- int 整型
- double 浮点型
- varchar 字符串型
- date 日期类型,给是为 yyyy-MM-dd ,只有年月日,没有时分秒
创建表
CREATE TABLE 表名(
字段名称1 字段类型,
字段名称2 字段类型
)
查看表
show tables; 查看当前数据库中的所有表名
desc 表名; 查看数据表的结构
删除表
drop table 表名; 删除表(从数据库中永久删除某一张表)
drop table if exists 表名; 判断表是否存在, 存在的话就删除,不存在就不执行删除
修改表
修改表名
rename table 旧表名 to 新表名
修改表的字符集
alter table 表名 character set 字符集
向表中添加列, 关键字 ADD
alter table 表名 add 字段名称 字段类型
修改表中列的 数据类型或长度 , 关键字 MODIFY
alter table 表名 modify 字段名称 字段类型
修改列名称 , 关键字 CHANGE
alter table 表名 change 旧列名 新列名 类型(长度)
删除列 ,关键字 DROP
alter table 表名 drop 列名
DML 操作表中数据
SQL中的DML 用于对表中的数据进行增删改操作
插入数据
insert into 表名 [(字段名1,字段名2...)] values(字段值1,字段值2...)
方式1: 插入全部字段, 将所有字段名都写出来
INSERT INTO user (uid, uname, age) values(1, '小明', 18)
方式2: 插入全部字段,不写字段名
INSERT INTO USER VALUES(2, '张三', 20)
方式3:插入指定字段的值
INSERT INTO USER(uname) VALUES('李四')
更改数据
语法格式1:不带条件的修改
update 表名 set 列名 = 值
语法格式2:带条件的修改
update 表名 set 列名 = 值 [where 条件表达式: 字段名 = 值 ]
UPDATE USER SET uid = 3, age = 22 WHERE uname = '李四'
删除数据
语法格式1:删除所有数据
不推荐. 有多少条记录 就执行多少次删除操作. 效率低
delete from 表名
推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高
truncate table 表名
语法格式2: 指定条件 删除数据
delete from 表名 [where 字段名 = 值]
DELETE FROM USER WHERE uname = '李四'
DQL 查询表中数据
简单查询
select 列名 from 表名
查询所有数据
SELECT * FROM USER;
查询一些列的数据
SELECT uid, uname FROM USER;
查询并且给列起别名
SELECT uid, uname AS '姓名' FROM USER;
查询并且去重
SELECT DISTINCT uname FROM USER;
查询结果后运算,不影响源数据
SELECT uname, age + 10 FROM USER;
条件查询
先取出表中的每条数据,满足条件的数据就返回,不满足的就过滤掉
select 列名 from 表名 where 条件表达式
运算符
- > < <= >= = <> != 大于、小于、大于(小于)等于、不等于
- BETWEEN ...AND... 显示在某一区间的值
- IN(集合) 集合表示多个值,使用逗号分隔
- LIKE '%张%' 模糊查询
- IS NULL 查询某一列为NULL的值, 注: 不能写 = NUL
逻辑运算符
- And && 多个条件同时成立
- Or || 多个条件任一成立
- Not 不成立,取反
模糊查询 通配符
- % 表示匹配任意多个字符串
- _ 表示匹配 一个字符