破解密码
思路:跳过授权表 密码专门的文件维护 #1、关闭mysql net stop mysql #2、跳过授权 mysqld --skip-grant-tables #3重开一个终端连接,登录进去就是root用户 mysql 4:修改密码 update mysql.user set password=password("egon123") where user="root" and host="localhost"; flush privileges; 只要涉及到权限修改这一条就加上 5:关掉刚才跳过授权的服务 taskkill /F /PID 9552 6:启动服务 net start mysql 7:使用刚才修改的密码登录,ps:注意修改自己的配置文件 mysql -uroot -p"egon123" 修改用户密码: 不需要停止服务 mysqladmin -uroot -p"123" password "1234" 登录: mysql -uroot -p"1234"
基本的sql语句
文件夹:库 增 create database db1 charset utf8; 不写默认就是utf-8 删 drop database db1; 改 alter database db1 charset gbk; 查 show databases; show create database db1; 文件:表 切换文件夹 use db1; 查看当前所在的库 select database(); 增 create table t1(id int,name char); create table db1.t1(id int,name char); 删 drop table t1; 改 alter table t1 add age int; 增加字段 alter table t1 modify name char(15); 修改字段的数据属性 alter table t1 change name NAME char(15); 把字段名变大写 alter table t1 drop age; 删除字段 查 show tables; show create table t1; desc t1; describe t1; 文件内的一行行内容:记录 增 insert into t1(id,name) values (1,'egon'), (2,'lxx'), (3,'alex'); 删 delete from db1.t1 where id >= 2; 根据id删除符合条件的记录,id没了 create table t2(id int primary key auto_incremnt,name char(15)); 加约束条件 insert into t2(name) values ('egon'), ('lxx'), ('wxx'), ('axx'); 清空表应该使用: truncate t2; 改 update db1.t1 set name='lxx_dsb' where id=2; 修改符合条件的记录 查 select id from db1.t1; select id,name from t1; select name,id from t1; select * from t1; select * from t1 where id >= 2; 根据条件查
表字段的数据类型
一、创建表的完整语法 #语法: create table 库名.表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); 约束条件:是在数据类型之外对字段附加的额外的限制 #注意: 1、最后一个字段之后不能加逗号 2. 在同一张表中,字段名是不能相同 3. 宽度和约束条件可选,字段名和类型是必须的 二、数据类型 #1、整型:默认是有符号的 create table t3(x tinyint); ps:修改sql_mode为严格模式,必须重启客户端才能生效 set global sql_mode="strict_trans_tables"; select @@sql_mode; create table t4(x tinyint unsigned); #修改成不带符号的 # 强调:整型类型后面的宽度限制的根本不是存储宽度,限制的是显示宽度 create table t5(id int(1)); create table t6(id int(5)); #2、浮点型: float(255,30) double(255,30) decimal(65,30) create table t8(x float(255,30)); create table t9(x double(255,30)); create table t10(x decimal(65,30)); insert into t8 values(1.111111111111111111111111111111); insert into t9 values(1.111111111111111111111111111111); insert into t10 values(1.111111111111111111111111111111); 3、日期类型 year 1999 date 1999-11-11 time 08:30:00 datetime/timestamp 1999-11-11 08:30:00 create table student( id int primary key auto_increment, name char(16), born_year year, birth date, class_time time, reg_time datetime ); insert into student(name,born_year,birth,class_time,reg_time) values ('egon1',now(),now(),now(),now()); insert into student(name,born_year,birth,class_time,reg_time) values ('egon1',2000,20001111,now(),now()); insert into student(name,born_year,birth,class_time,reg_time) values ('egon1',2000,'2000-11-11',083000,now()); insert into student(name,born_year,birth,class_time,reg_time) values ('egon1',2000,'2000-11-11',"08:30:00",20171111111111); insert into student(name,born_year,birth,class_time,reg_time) values ('egon1',2000,'2000-11-11',"08:30:00","2017-11-11 11:11:11"); create table t11(x timestamp); create table t12(x datetime not null default now()); 4、字符类型 # 注意:宽度指限制的是字符个数 char:定长 char(5) varchar:变长 varchar(5) 相同点:宽度指的都是最大存储的字符个数,超过了都无法正常存储 不同点: char(5): 'm'--->'m '5个字符 varchar(5) 'm'--->'m'1个字符 #让数据库怎么存怎么取,不自动忽略右面的空格 set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; 注意:mysql在查询时针对where 字段="值 "会忽略掉右面的空格,即where 字段="值" 如果时like模糊匹配就不会忽略右面的空格了 char(5) egon |axx |lxx |fm | varchar(5) 1bytes+egon|1bytes+axx|1bytes+lxx|1bytes+fm| # 宽度相关练习 mysql> create table t13(x char(5)); Query OK, 0 rows affected (0.20 sec) mysql> create table t14(x varchar(5)); Query OK, 0 rows affected (0.27 sec) mysql> mysql> mysql> insert into t13 values('xxxxxx'); ERROR 1406 (22001): Data too long for column 'x' at row 1 mysql> insert into t14 values('xxxxxx'); ERROR 1406 (22001): Data too long for column 'x' at row 1 5、枚举与集合类型 枚举enum('a','b','c'):多选一 集合set('a','b','c'):多选多 create table emp( name varchar(15), sex enum('male','female','unkown'), hobbies set('read','music','yinshi','play') ); insert into emp values ('zhangming','xxx','xxxx'); mysql> insert into emp values('zhangming','female','read,play'); Query OK, 1 row affected (0.03 sec) mysql> select * from emp; +-----------+--------+-----------+ | name | sex | hobbies | +-----------+--------+-----------+ | zhangming | female | read,play | +-----------+--------+-----------+ 1 row in set (0.00 sec) 三、约束条件
上节课复习
上节课复习: 1、多路复用IO select模型 poll模型 epoll模型 2、异步IO 3、数据库 本质就是一个C/S架构的套接字软件 Server的套接字软件专门管理本地硬盘上的数据文件 相关观念: 数据库服务器:运行有数据库管理软件的计算机 数据库管理软件:套接字软件Mysql 库:文件夹 表:文件 记录:就相当于文件中的一行内容 今日内容: 1、sql语句 库,表,记录的增删改查 2、库详细操作 3、表详细操作 创建表 数据类型 完整性约束