表和字段是密不可分的
1.创建表
--1.显式指定所属数据库
create table if not exists 数据库名.表名(
字段名 数据类型,
字段名 数据类型
)[表选项];
其中 if not exists 如果表名不存在,那么就创建,否则不执行创建代码,带有检查功能
表选项:控制表的表现
字符集:charset/character set 具体字符集 ;-- 保证表中存储的字符集
校对集:collate 具体校对集
存储引擎:engine 具体的存储引擎(innodb和myisam)
--2.隐式的指定表所属数据库:先进入到某个数据库环境,然后这样创建的表自动归属到某个指定数据库
use 数据库名称;
create table 表名(
name varchar(20),
room varchar(20)
)charset utf8;
2.查看数据表
--1.查看全部表
show tables
--2.模糊匹配表
show tables like ‘xxxxx’;
--3.匹配以s结尾的表
show tables like '%s';
--4查看表创建语句
show create table 表名
show create table students;--5.查看表结构
desc 表名;
describe 表名;
show columns from 表名;
3.修改数据表
alter table 表名 add / change / drop 列名 类型;
alter table students add birthday datetime;
--1.修改表本身
表名修改
rename table 老表名 to 新表名
表选项修改 (字符集 校对集 存储引擎)
alter table 表名 表选项 = xxx
--2.修改字段
新增字段
alter table 表名 add [column] 字段名 数据类型 [列属性][位置];
alter table info_student add column id int first;修改字段(修改通常是修改属性或者数据类型)
alter table 表名 modify 字段名 数据类型 [属性][位置]
alter table info_student modify id char(10) after age;--3.删除字段
alter table 表名 drop 字段名;
--4.删除数据表
drop table 表名1,表名2.。。。;
4.数据操作
--1.新增数据 两种方案
方案一。给全表字段插入数据,不需要指定字段列表,但是数据的值出现的顺序必须与表中的设计的字段出现的顺序一致,凡事飞数值数据,都需要使用引号(建议单引号)包裹
insert into 表名 values (值列表),(值列表),(值列表)........;
insert into stu_info values ('jim',18,001);方案二。给部分字段插入数据,需要选定字段列表,字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定的字段的顺序一直
insert into 表名 (字段列表) values (值列表),(值列表)........;
insert into stu_info (name,age) values ('haha1',1),('haha2',2),('haha3',3);5.查看数据
--1.查看全部记录
select * from 表名;
select * from stu_info;--2.查看指定字段
select 字段列表 from stu_info;
select age from stu_info; select age name from stu_info;--3.查看指定字段指定条件
select 字段列表 from 表名 where 条件 and / or 条件 ,and / or 条件,and / or 条件.........;
--4.排序查找
select 字段列表 from 表名 order by 字段;
select (age) from stu_info order by age; select * from sut_info order by age;其中order by 排序依赖条件 依赖校对集
6.更新字段
update 表名 set 字段 = 值 [where 条件];建议都带where 否则会出现全部更新的尴尬
update stu_info set name = "foo"; update stu_info set name = "haha" where age = 18;7.删除数据 (删除不可逆,操作需谨慎)
delete from 表名 where 条件;
delete from stu_info where age = 18;8.中文数据问题
中文数据问题 本质是字符集问题,
查看服务器默认的对外处理的字符集
show variables like 'character_set%'
show variables like 'character_set%'客户端数据只能是GBK 而服务器认为是UTF-8 需要改变服务器接受字符集为GBK:
修改服务器认为的客户端的字符集为GBK
set character_set_client = gbk;
快捷设置字符集
set names gbk;
相应的 character_set_client ,character_set_nconnection,character_set_results 都会改变
9.校对集(数据比较的方式)
_bin :binary 二进制比较,取出二进制位 ,从左向右 按位比较,可用于ASCII码比较,区分大小写
_cs:case sensitive 大小写敏感
_ci:case insensitive 大小写不敏感
查看数据库支持的校对集
show collation;
只有当数据产生比较时 order by,校对集才会生效
相同的 校对集的设置必须在生成表时设置,若有数据后 设置校对集 则无效
alter table my_collate_ci collate = utf8_bin;
网友评论