文章目录
详见 MySQL数据库—SQL汇总
SQL基础使用
1 SQL基本概念
1.1 SQL语言分类
- 数据定义语言DDL:针对数据库或表,如create、drop、alter等语句
- 数据操纵语言DML:针对表中的数据,如insert、delete、update等语句
- 数据查询语言DQL:如select语句
- 数据控制语言DCL:如grant,revoke,commit,rollback等语句
1.2 常用名词
-
数据表的一列称为字段(field)
-
数据表的一行称为记录
-
主键和唯一键
-
utf8
UTF-8(标准写法),Universal Character Set/Unicode Transformation Format,通用字符集/Unicode转换格式。
PHP 在 Windows 下边英文不区分大小写,所以也可以写成 “utf-8”;“UTF-8” 也可以把中间的"-“省略,写成 “UTF8”,一般程序都能识别;MySQL中使用utf-8与UTF-8会出现问题,只能使用"utf8”。
UTF-8是编码规则,Unicode是字符集。
字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
1.单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;
2.n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。
1.3 通配符
- 百分号%:匹配任意类型和长度的字符,中文用两个%
- 下划线_:匹配单个任意字符
- 方括号[ ]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个
- 方括号[^]或者[!]:其取值也[ ]相同,但它要求所匹配对象为指定字符以外的任一个字符。
2 SQL基本语句
2.1 数据库操作——增、删、查
create database if not exists new_dbname; -- 新增 数据库
drop database old_dbnane; -- 删除 数据库
use databasename; -- 选中 数据库
select database(); -- 查看 当前选中的数据库
show databases; -- 查看 所有数据库
2.2 表操作——增、删、查
create table if not exists tablename(field1, field2, field3, ..., primary key(fieldname), foreign key(fieldname) references tablename2(fieldname))[engine=InnoDB auto_increment=1 default charset=utf8]; -- 新增 表
--field——fieldname fieldtype [primary key] [not null] [unique] [auto_increment] [default '默认值'] [comment '注释内容 references tablename2(fieldname)']
create table tablename select statement; -- 新增 表(通过子查询)
drop table tablename; -- 删除 表
select * from tablename; -- 查看 表内容
describe tablename; -- 查看 表结构
show create table tablename;--查看 建表语句
2.3 表操作——改
alter table tablename add field [after fielname(or first)]; -- 新增 列
alter table tablename drop fieldname; -- 删除 列
alter table tablename modify fieldname new_fieldtype; -- 修改 列类型
alter table tablename add unique(fielname); -- 添加 唯一属性(为已有fieldname)
alter table tablename drop index fielname; -- 删除 唯一属性
alter table tablename fieldname fieldtype auto_increment; -- 添加 自增属性(一个表只能有一个字段具有自增属性,且必须是键)
alter table tablename rename new_tablename; -- 重命名表
2.4 数据操作——增、删、改、查
insert into tablename(fieldname1,fieldname2,fieldnamen) values('value1','value2',...); -- 新增 一条记录(存在默认值的字段可以不指定)
delete from tablename [where fieldname=value]; -- 删除 一条记录
truncate table tablename; -- 清空表中所有数据,DDL语句
update tablename set fieldname1=new_value where filename2=value; -- 修改 一条记录某个字段中的数据
select *(or fieldname1,fieldname2,...) from tablename [where filename='value']; -- 查找 (若使用通配符%、_要用like、not like,而不能用=、!=)
2.5 存储引擎操作
show engines;--查看mysql现在已提供的存储引擎:
show variables like '%storage_engine%';--查看mysql当前默认的存储引擎
show create table tablename;--查看某张表用的存储引擎(结果的"ENGINE="部分)
alter table tablename ENGINE=InnoDB--修改引擎
create table tablename(fieldname1 fieldtype1,fieldname2 fieldtype2,..) ENGINE=engine_name;--创建表时设置存储引擎
2.6 其他
comment '注释内容'
3 设置支持中文数据
3.1 查看编码
show create database dbname; -- 查看数据库编码
show create table tablename; -- 查看数据表编码
-- 将数据库或表格的编码方式设置为国际通用编码utf-8,便可支持中文数据
3.2 设置数据库为UTF-8编码
- 创建数据时设置编码
create database dbname default character set utf8;
- 修改配置文件
# 修改mysql配置文件,使默认编码为UTF-8
sudo vim /etc/mysql/my.cnf
______________________________
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
______________________________
3.3 设置数据表为UTF-8编码
- 创建数据表时设置编码
create table tables(...)character set=utf8;
- 修改已创建的数据表编码
alter table tablename convert to character set utf8;