-- 登陆客户端
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
mysql.exe -hlocalhost -P3306 -uroot -p123456
#创建数据库
-- 注释,双中划线加空格
#数据库的创建
create database mydatabase charset utf8;
-- 创建关键字数据库,使用反引号ESC下面使用关键字
create database `database` charset utf8;
-- 创建中文数据库
set names gbk;
create database 中国 charset utf8;
#数据库的操作
-- 查看所有数据库
show databases;
-- 创建数据库
create database information charset utf8;
-- 查看数据库
show database like 'iniformation_%';-- 需要加反斜杠转义 ,这里相当于information%
show database like 'information\_%';
-- 查看数据库创建语句 如果涉及关键字用反引号
show create database mysql;
-- 修改数据库的字符集
alter database information charset GBK;
-- 删除数据库
drop database information;
#数据表的操作
-- 创建表,在student库中创建student表
create table if not exists student.student(
name varchar(10),
gender varchar(10),
number varchar(10),
age int
)charset utf8;
-- 进入数据库进行创建
use student;
create table class(
name varchar(10);
room varchar(10)
)charset utf8;
-- 当创建数据表指令执行后,指定数据库下已经存在对应的表
-- 在数据库对应的文件夹下会产生对应表的结构文件.frm
create database student charset utf8;
use student;
create table if not exists student(
name varchar(10),
gender varchar(10),
age int
)charset utf8;
-- 查看所有数据表
show tables;
-- 查看部分表
show tables like '%s';
--查看表创建语句
show create table student\g;
show create table student\G;-- 将查到的结果旋转90度查看
-- 查看表结构 desc table_name
desc student;
describe student;
show columns from student;
-- 字段名 列类型字段数据类型 列属性是否允许为空 索引:索引类型PRI,主键,RPI唯一键等 列属性默认值 扩充额外的
-- +--------+-------------+------+-----+---------+-------+
-- | Field | Type | Null | Key | Default | Extra |
-- +--------+-------------+------+-----+---------+-------+
-- | name | varchar(10) | YES | | NULL | |
-- | gender | varchar(10) | YES | | NULL | |
-- | age | int(11) | YES | | NULL | |
-- +--------+-------------+------+-----+---------+-------+--
-- 修改数据表
-- 1修改表本身 修改表名和表选项
-- a.重命名表
rename table student to neu_student;
-- b.修改表选项
alter table neu_student charset=gbk;-- 修改字符集
-- 2.字段的修改包括:新增,修改,重名,删除
-- a.新增字段 alter table 表名 add[column] 字段名 数据类型[列属性][位置];
-- 字段名可以存放在表中的任意位置 first:第一个位置 after:在那个字段之后,默认人是最后一个字段之后
alter table neu_student
add column id int
first;
desc neu_student;
-- b.修改字段 通常修改属性或者数据类型
-- alter table NAME modify 字段名 数据类型 [属性][位置]
alter table neu_student -- 修改id数据类型
modify id char(10)
after name;
desc neu_student;
-- c.重命名字段
-- alter table 表名 change 旧字段 新字段 数据类型 [属性][位置]
alter table neu_student
change age 年龄 int
after name;
-- d.删除字段
-- 删除表中的字段
alter table neu_student drop 年龄;
-- 3.删除数据表
-- drop table name1,name2,...;可以删除多张表
-- 在表空间中没有了指定的表,在数据库文件夹下没有了对应的文件(与存储引擎有关)
drop table neu_student;
#数据的操作
-- 新增数据
-- 方案一:给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中字段出现的顺序一致;凡是非数值数据,都需要使用引号(建议使用单引号)
insert into neu_student values('lilei',18,'male'),('hanmeimei',18,'female');-- 可以一次性插入多组数据
-- 方案二:给部分字段插入数据,需要选定字段列表;字段列表出现的顺序与字段的顺序无关;但是值列表顺序必须与选定的字段顺序一致
-- insert into 表名 (字段列表) values(值列表),...;
insert into neu_student(name,gender) values('zhangsan','male'),('lisi','female');
-- 查看数据库
-- select */字段列表 from 表名 [where 条件]
select * from neu_student;
-- +-----------+------+--------+
-- | name | 年龄 | gender |
-- +-----------+------+--------+
-- | lilei | 18 | male |
-- | hanmeimei | 18 | female |
-- | zhangsan | NULL | male |
-- | lisi | NULL | female |
-- +-----------+------+--------+
-- 查看指定字段指定条件的数据
select name,年龄,gender from neu_student where gender = 'male';
-- 更新数据
-- update 表名 set 字段 = 值[where 条件] --建议都有where,否则会更新全部
update neu_student set 年龄 = 20 where name = 'zhangsan';
update neu_student set 年龄 = 22 where name = 'lisi';
-- 删除数据
delete from neu_student where name = 'zhangsan';
#中文数据问题
-- 中文数据本质是字符集问题,计算机只识别二进制;
-- 插入中文数据
insert into neu_student values('王大脸',18,'female');
-- 以上语句插入中文数据失败,原因是:服务器没有识别中文对应的字节,服务器认为数据是utf8,一个汉字三个字节,系统先读取自己的变量,看看应该怎么表现,
-- 查看字符集 服务器基本上支持任何字符集。
show character set;
-- 总有一种默认字符集,
--查看服务器默认的对外处理的字符集
show variables like 'character_set%';
/*-- 这里为改变以后的字符集
+--------------------------+----------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------
-----+
| character_set_client | gbk -- 服务器默认的客户端来的数据集 utf8
|
| character_set_connection | gbk -- 连接层字符集
|
| character_set_database | utf8 -- 当前所在数据库的字符集
|
| character_set_filesystem | binary
|
| character_set_results | gbk -- 服务器默认的给外部数据的字符集
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7
ets\ |
+--------------------------+----------------------------------------
-- 问题在于客户端数据只能是gbk,而服务器默认是utf8 改变服务器的默认字符集*/
set character_set_client=gbk;
-- 插入数据乱码的原因,客户端只识别gbk;但是服务器解析确是utf8;通过修改服务器给客户端的数据字符集为gbk;
set character_set_results=gbk;
-- 快捷设置字符集
set names gbk;
/*#校对集问题
#校对集数据比较的方式,校对集有三种格式
# _bin:binary,二进制,取出二进制位,一位一位的比较,区分大小写。
# _cs :case sensitive 大小写敏感,区分大小写
# _ci:case insensitive 大小写不敏感,不区分大小写。
#查看数据库所支持的校对集:show collation;
#校对集应用,只有当数据产生比较的时候,校对集才起作用
-- 创建使用不同校对集的表
*/
create table my_collate_bin(name char(1))charset utf8 collate utf8_bin;
create table my_collate_ci(name char(1))charset utf8 collate utf8_ci;
-- 插入数据
insert into my_collate_bin values('a'),('b'),('C'),('D');
insert into my_collate_ci values('a'),('b'),('C'),('D');
-- 根据指定关键字段对数据进行排序
-- order by 字段名 [asc|desc] asc升序,desc降序 默认是升序
select * from my_collate_bin order by name;
select * from my_collate_ci order by name;
-- 校对集:必须在没有数据之前声明,如果有了数据,那么再进行校对集修改,那么修改无效。
/*WEB 乱码问题 动态网站由三部分组成:浏览器,apache服务器,数据库服务器,三个部分都有自己的字符集,数据库需要在三个部分之间来回传递,很容易产生乱码
*/
MySQL数据库
最新推荐文章于 2022-12-08 09:00:00 发布