Mysql基础

一、SQL ( Structure query language ) 结构化查询语言

# SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)
"""
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER

2、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

3、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE

4、DQL语句 数据库操纵语言:查询数据SELECT

"""

1、关系型与非关系型数据库

"""
mysql数据库管理软件,记录事物一些数据特征:
由库,表,记录组成.
库相当于一个文件夹
表相当于一个文件
记录就是文件里面一条一条的内容
表中的成员属性就是一个一个字段
可以为每个项目建立一个数据库

关系型数据库:表与表之间有联系
比如:mysql,oracle,db2,sqlserver

非关系型数据库: key-value 键值对形式 没有表的概念
比如:redis,mongodb,memcache
"""

2、SQL语句中的快捷键

"""
\G 格式化输出(文本式,竖立显示)

\s 查看服务器端信息

\c 结束命令输入操作

\q 退出当前sql命令行模式

\h 查看帮助
"""

二、Linux与windows的Mysql服务启停

# windows
"""
net start mysql
net stop mysql
"""
# Linux
"""
service mysql start
service mysql stop

service mysql restart
"""

三、通过命令行连接MySQL

1、连接数据库

"""
登录mysql的完整语法
    mysql -u用户名 -p密码  -h地址ip
"""

例:

# (1) 登录mysql语法 默认root账户 是系统最高权限用户
mysql -uroot -p 
127.0.0.1 =>localhost 本地ip地址
# (2) 退出mysql
exit 或者 \q
# (3) 远程连接mysql服务器
mysql -uroot -p -h192.168.65.135

2、查看登录用户、设置密码

"""
# 查询当前登录的用户是谁
select user()
# 设置密码
set password = password("123456")
# 去除密码
set password = password("")
"""

3、为某个IP设置账号密码

# 给具体某个ip设置账号密码,用来访问数据库(公网ip)
create user ceshi100@192.168.65.1 identified by 333;
# 给具体某个网段下的所有ip设置共同的账号密码,用来访问数据库(公网ip) %代表任意的ip 0~255
create user ceshi101@192.168.65.%  identified by 444;
# 所有的ip都可以登录到服务器数据库中
create user ceshi102@% identified by 555;

3.1、为某个用户增加权限

3.1.1、查看权限

show grants for ceshi102@%;
# USAGE 没有任何权限
"""
+--------------------------------------+
| Grants for ceshi102@%                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ceshi102@% |
+--------------------------------------+
"""

3.1.2、增加权限

grant 权限 on 数据库.表名 to 用户名%ip地址 identified by 密码
"""
# 主要权限
select 查看数据表的权限
insert 插入数据表的权限
update 更新数据表的权限
delete 删除数据表的权限
drop   删除数据库的权限
*      代表所有
"""

例:

grant select,drop on *.* to ceshi102@% identified by "333"
# all 代表所有权限
grant all on *.* to ceshi102@% identified by "333"
# 移除权限
# 单个
revoke drop on  *.* from ceshi102@%
# 所有
revoke all on  *.* from ceshi102@%
# 删除用户
drop user ceshi102@%

# 刷新权限,立刻生效
flush privileges

四、操作数据库

--
    -- 创建一个数据库, 如果存在s3会报错
    create database db0824 charset utf8;
    -- 不会报错 1个warring
    create database if not exists s3
    --  更改编码方式utf8
    create database if not exists s4 character set utf8
--
    --  查看所有数据库
    show databases
    --  查看建立数据库的语句
    show create database db0824 #  CREATE DATABASE `db0824` /*!40100 DEFAULT CHARACTER SET utf8 */ 
--
    alter database db0824_1 charset gbk

--
    drop database db0824_1;

五、操作数据表 (文件)

# 先选择数据库
# use 数据库名
# 退回到上一层
# use mysql
--
    -- 字段名1 类型1 ,字段名2 类型2 , ... ... 
    create table t1(id int , name char);

--
    -- 查看所有表 
    show tables;
    -- 查看建表语句 配合\G 可以垂直显示
    show create table t1;
    """
    Create Table: CREATE TABLE `t1_1` (
      `id` int(11) DEFAULT NULL,
      `name` char(1) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    """
    
    -- 查看表结构
    desc t1

--
    -- modify 只能改变数据类型
    alter table t1 modify name char(5)
    -- change  连字段名 + 类型一起改变
    alter table t1 change name newname char(4)
    -- add 添加字段
    alter table t1 add age int;
    -- drop 删除字段 column列
    alter table t1 drop column age
    -- rename 更改表名
    alter table t1 rename t1_2
    
--
    drop table t1_2;

六、操作记录 (文件中的数据)

--
    -- 一次插入一条数据
    -- insert into 表名(字段1,字段2,...) values(值1,值2, .... )
    insert into t1_1(id,name) values(1,"xboy1");
    -- 一次插入多条数据
    insert into t1_1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4");
    -- 不指定具体字段插入(默认把所有字段对应的值插一遍)
    insert into t1_1 values(5,xboy5);
    -- 指定单个字段插入数据
    insert into t1_1(name) values(xboy6);    

--
    --  * 代表所有
    select * from t1_1;
    -- 指定字段进行查询
    select id,name from t1_1;
    
--
    -- update 表名 set 字段=值  where 条件
    update t1_1 set name="kxq" where id = 1
    -- 切记更改时,加上条件,否则全都改掉了
    update t1_1 set name="kxq" 

--
    -- 指定id=2的这条数据删除
    delete from t1_1 where id = 1
    -- 如果不加条件,删除所有数据
    delete from t1_1 
    
    -- 重置数据表 (删除数据 + 重置id)
    truncate table t1_1;

七、常用数据类型

7.1、整形

-- tinyint 1个字节 有符号(-128 ~ 127) 无符号(unsigned) (0 ~ 255) 小整型值
-- int     4个字节 有符号(-21亿 ~ 21亿 左右) 无符号(unsigned) (0 ~ 42亿) 大整型值

    create table t1(id int , age tinyint );
    insert into t1 values(2200000000,1) error
    insert into t1 values(2100000000,1) 
    insert into t1 values(2100000000,128)  error
    insert into t1 values(2100000000,127)

7.2、浮点型

float(255,30)    -- 单精度
double(255,30)   -- 双精度
decimal(65,30)  -- 金钱类型,使用字符串的形式保存小数

    -- 默认存在四舍五入
    create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2));
    insert into t2 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);

    --float 默认小数保留5位,double小数位截取16位,decimal(10,0) 默认保留整数,存在四舍五入
    create table t3(f1 float,f2 double ,f3 decimal); 
    insert into t3 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);

    create table t4(f1 float(5,2));
    insert into t4 values(12.34567889) # 12.35
    insert into t4 values(123.34567889) # 123.35
    insert into t4 values(1234.34567889) error 

7.3、字符串

char    -- 字符长度 255个
varchar  -- 字符长度 21845个 (注意:总字节数不超过65535)

char(11)      -- 定长 : 固定开辟11个字符长度的空间(手机号,身份证号,银行卡), 开辟空间速度上char速度更快
varchar(11)   -- 变长 : 最多开辟11个字符长度的空间(评论,消息留言,地址), 开辟速度相较于char慢一点.
text          -- 文本类型,存论文,小说,文章..

    create table t5(c char(11), v varchar(11) , t text);
    insert into t5 values(1111,"酸辣粉加上队列副经理开","sdfsdf234");
    insert into t5 values(1111,"酸辣粉加上队列副经理2开","sdfsdf234"); error
    -- concat 拼接任意长度的字符串
    select concat(c,":",v,":",t) from t5;

八、 mysql中常用函数

select user()
select concat()
select concat(参数1,参数2,参数3 , ... ) 把所有的参数拼接在一起

九、枚举 和 集合

-- enum 枚举 : 从列出来的数据当中选一个(性别)
-- set  集合 : 从列出来的数据当中选多个(自动去重) 爱好
create table t6(
id int,
name varchar(10),
money float(6,3),
sex enum("男性","女性","禽兽","人妖","雌雄同体","半兽人","阿凡达"),
hobby set("吃肉","抽烟","喝酒","喝假酒")
);


-- 正常
insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟");
-- 自动去重
insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟,抽烟,抽烟,抽烟");

 

Mysql基础

上一篇:阿里巴巴Web前端面试的一道JS题目,求解答!!!


下一篇:【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)