python-study-38

破解密码

思路:跳过授权表 密码专门的文件维护
#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"
View Code

基本的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; 根据条件查
View Code

表详细操作

一、创建表的完整语法
#语法:
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)
三、约束条件
View Code

上节课复习

上节课复习:
    1、多路复用IO
        select模型
        poll模型
        epoll模型

    2、异步IO

    3、数据库
        本质就是一个C/S架构的套接字软件
        Server的套接字软件专门管理本地硬盘上的数据文件

        相关观念:
            数据库服务器:运行有数据库管理软件的计算机
            数据库管理软件:套接字软件Mysql
            库:文件夹
            表:文件
            记录:就相当于文件中的一行内容

今日内容:
    1、sql语句
        库,表,记录的增删改查

    2、库详细操作

    3、表详细操作
        创建表
            数据类型
            完整性约束
View Code

猜你喜欢

转载自www.cnblogs.com/xujinjin18/p/9338371.html