MySQL数据库

-- 登陆客户端
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服务器,数据库服务器,三个部分都有自己的字符集,数据库需要在三个部分之间来回传递,很容易产生乱码

*/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值