MySQL-3表操作

表和字段是密不可分的

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 表名

MySQL-3表操作_第1张图片
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] 字段名 数据类型 [列属性][位置];

MySQL-3表操作_第2张图片
alter table info_student add column id int first;                                           

修改字段(修改通常是修改属性或者数据类型)

alter table 表名 modify 字段名 数据类型 [属性][位置]

MySQL-3表操作_第3张图片
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 表名;

MySQL-3表操作_第4张图片
select * from stu_info;

--2.查看指定字段

select 字段列表 from stu_info;

MySQL-3表操作_第5张图片
select age from stu_info;
MySQL-3表操作_第6张图片
select age name from stu_info;

--3.查看指定字段指定条件

select 字段列表 from 表名 where 条件 and / or 条件 ,and / or 条件,and / or 条件.........;

--4.排序查找

select 字段列表 from 表名 order by 字段;

MySQL-3表操作_第7张图片
select (age) from stu_info order by age;
MySQL-3表操作_第8张图片
select * from sut_info order by age;

其中order by 排序依赖条件 依赖校对集

6.更新字段

update 表名 set 字段 = 值 [where 条件];建议都带where 否则会出现全部更新的尴尬

MySQL-3表操作_第9张图片
update stu_info set name = "foo";
MySQL-3表操作_第10张图片
update stu_info set name = "haha" where age = 18;

7.删除数据 (删除不可逆,操作需谨慎)

delete from 表名 where 条件;

MySQL-3表操作_第11张图片
delete from stu_info where age = 18;

8.中文数据问题

中文数据问题 本质是字符集问题,

查看服务器默认的对外处理的字符集

show variables like 'character_set%'

MySQL-3表操作_第12张图片
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; 

你可能感兴趣的:(MySQL-3表操作)