[关闭]
@xxliixin1993 2016-07-11T16:51:38.000000Z 字数 4308 阅读 1835

MySQL基础

database


数据库导入导出

1. mysql批量执行:

在一个文件中写入sql语句,例在test文件中写入show databases;
shell>   mysql -h 172.16.37.9 -u lx-p < test
Enter password: ********

2. 数据库导入导出:

导入:
1)mysql> USE 数据库名;            [数据库要事先存在]
mysql> SOURCE d:/test.sql; 
2) [数据库要事先存在]
mysqldump --default-character-set=utf8 -u用户名 -p 数据库名 < 目标文件(如d:\test.sql)

导出:
mysqldump --default-character-set=utf8 -u用户名 -p 数据库名 > 目标文件(如d:\test.sql)
例mysqldump -u root -p tpweb > d:\test.sql

MySQL支持的数据类型:

1.字符型

定长 变长
CHAR(#) VARCHAR(#)
BINARY(#) VARBINARY(#)

2.数值型

类型 长度
bit 0-1
int -2^31-2^31-1(4个字节)
bigint -2^63-2^63-1(8个字节)
float 小数 例float(3) 三位小数
numeric 小数 例numeric(20,2)20表示小数加整数一共20位,2表示小数为2位

3.日期时间型

date
time
datetime
year(2)
year(4)

4.类型的修饰符

UNSIGNED 无符号
NULL 可以为空
NOT NULL 不能为空
DEFAULT 认为,例default 'man' 表示如果不填,默认为man
AUTO_INCREMENT 整数专用的修饰符 自增长
PRIMARY KEY 主键
UNIQUE KEY 唯一键
FOREIGN KEY 外键(外键只能指向主键,且和主键的类型一致)

例:

  1. /*创建dept表*/
  2. create table dept(
  3. deptno int primary key,
  4. dname varchar(30),
  5. local varchar(30))
  6. --创建emp
  7. create table emp(
  8. empno int primary key,
  9. ename varchar(30),
  10. deptno int foreign key references dept(deptno) --创建外键关联dept表的主键
  11. )

MariaDB的交互命令接口:

mysql>
    可运行的命令有两类:
    客户端命令:在mysql客户端本地直接运行的命令
        获取完整列表:
            mysql> help
    服务器端命令:由客户端将命令通过协议封闭成报文发往mysqld,由mysqld运行,并取回运行结果至客户端;
            即SQL语句,这些语句必须有语句结束符,默认为; 

            客户端命令:
                quit, \q:退出
                help, \h:帮助
                clear, \c: 中止正在编写的语句;类似bash中的Ctrl+c的功能;
                go, \g: 语句结束符
                ego, \G: 语句结束符,但竖排显示每行数据;
                delimter, \d: 定义语句结束符;
                use, \u: 设定要操作默认数据库;

            SQL语句可以通过help COMMAND获得帮助
                例:help create user;

数据库管理操作

创建数据库
    CREATE DATABASE 数据库名
    create database mydata
查看已有的数据库列表:
    SHOW DATABASES; 
查看某库创建时使用的语句:
    SHOW CREATE DATABASE db_name; 
查看MySQL支持的所有字符集:
    SHOW CHARACTER SET;
查看MySQL支持的所有Collate:
    SHOW COLLATION; 
删除数据库
    DROP DATABASE 数据库名

表管理操作:
    查看表结构
        desc 数据库名.表名;
        例:desc mysql.user;

建表要求

约束

CRUD操作

ALTER TABLE cms_ban ADD key(expire)

  1. WHERE后的条件表达式
  2. >, <, >=, <=, ==, !=
  3. BETWEEN ... AND ...
  4. LIKE 'pattern'
  5. _ 表示任意单个字符。匹配单个任意字符
  6. % 表示任意个或多个字符。可匹配任意类型和长度的字符。
  7. 如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用
  8. RLIKE 'pattern' 使用正则表达式做匹配;
  9. 组合条件:
  10. AND
  11. OR
  12. NOT
  13. <div class="md-section-divider"></div>

索引

  1. mysql> explain select Newcode from caiji_dong_info_bj where dongname like '%玉泉西里二区%'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE caiji_dong_info_bj index NULL Newcode_dongname 164 NULL 71625 Using where; Using index

解释:
虽然一般情况下like用索引的情况是玉泉西里二区%但是当你所有所需数据都在一个索引(id无所谓)中还是会用到索引的。
原因:
一个包含查询所需的字段的索引称为 covering index 覆盖索引。MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提供效率。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注