记录(行)之查

  1. 完整查询:  SELECT * FROM `users` WHERE 1
  2. 钦命列查询: SELECT Column一,Column二 FROM `users` WHERE 1
  3. 钦定行查询: SELECT * FROM `users` WHERE pattern
  4. 查询排序:SELECT * FROM `users` WHERE pattern ORDER BY `u_id`
    `name` DESC
  5. 分组查询:SELECT `gender`,COUNT(*) AS num FROM WHERE 1 GROUP BY
    `gender`

  注:分组查询唯有和聚合函数结合使用才有意义

安装mysql

  命令:sudo apt install mysql-server

建表

  数据库中的表在用户层约等于贰维的excel表格

  查看表的创建进度:SHOW CREATE TABLE `mysql`.`user`;

  创建表:CREATE TABLE `test`.`user`(column1 type1 option, colum2
type2 option);

  查看数据库表(已选定数据库意况下):SHOW TABLES;

  移动玉石俱焚名数据库表:RENAME TABLE `python`.`user` TO
`test`.`user`

  删除表:DROP TABLE `test`

  注:

  •  创制表的尾声壹行不要加逗号;排序
    collate=utf八_general_ci不区分大小写,查询快
     collate=utf八_genaral_bin区  
     分大小写,排序速度慢;每一个表度必要1个primary
    key(主键唯1且为非空);char()分配一定长度,  
     varchar()是最大尺寸可变的,品质相对较差
  •  数据库引擎:1、myisam   非事务型,查询快  贰、innodb  
    事务型,修改快,私下认可引擎(效率庞大)
  •  数据库表、列和数据库一样,能够独立地设置字符集与排序规则
  •  不钦赐列的default时私下认可会default null。
  •  关于字符集编码假诺不钦点就存在继续现象:列搜索表的编码,表找出库的编码,库寻觅配置文件编码
  •  数据库的每3个字段都不能不有固定类型
  •  mysql的内部二个平整是名字(字段名也是名字)要加反引号
  •    \c  撤销命令(cancle)    \G 把列数量逐行显示
  •  
     主键唯一且非空,不过唯一且非空不分明是主键
  •    建表有个套路就是用未有实际意义的id当作主键
  •    注册的时候怎么字段可感到空,哪些可以为空根据实际要求来定
  •    AUTO_INCREMENT
    必要和INT结合使用,有了AUTO_INCREMENT能够不钦定id进行插队
  •    只有ALTE智跑、RENAME、CREATE等重大字要接DATABASE 以及TABLE
  •  
     实体之间的涉及分成三种:一对壹;一对多;多对多。区分那三种关系能够由此画画来注脚。
  •    一对多:使用外键自律来贯彻
  •    1对一:使用外键 + UNIQUE KEY来兑现
  •    多对多:使用外键 + 第3方表来兑现

图片 1图片 2

 1 CREATE TABLE `users` (
 2     `id` int PRIMARY KEY AUTO_INCREMENT,
 3     `email` char(50) UNIQUE KEY NOT NULL,
 4     `user_name` varchar(20) NOT NULL,
 5     `telphone` char(11)    
 6 );
 7 
 8 CREATE TABLE `sellers` (
 9     `id` int PRIMARY KEY AUTO_INCREMENT,
10     `user_id` int UNIQUE KEY NOT NULL,
11     FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
12 );
13 
14 CREATE TABLE `houses` (
15     `id` int PRIMARY KEY AUTO_INCREMENT,
16     `summary` varchar(100) NOT NULL,
17     `seller_id` int NOT NULL,
18     FOREIGN KEY (`seller_id`) REFERENCES `seller`(`id`)
19 );
20 
21 CREATE TABLE `sellers_tags`(
22     `sellers_id` int NOT NULL,
23     `tag_id` int NOT NULL,
24     FOREIGN KEY (`sellers_id`) REFERANCES sellers(`id`),
25     FOREIGN KEY (`tag_id`) REFERANCES tags(`id`),
26     UNIQOE KEY(`sellers_id`, `tag_id`)  # PRIMARY KEY(`sellers_id`, 
27 
28 `tag_id`)
29 );
30 
31 CREATE TABLE `tags` (
32     `id` int PRIMARY KEY AUTO_INCREMENT,
33     `name` varchar(20) UNIQUE KEY NOT NULL
34 );

View Code

navicat连接mysql

  mysql客户端输入下述3条命令:

  1. CREATE USER ‘jack’@’%’ IDENTIFIED BY ‘123456’   #
    jack是用户名,%是放四主机,123456是密码

  2. GRANT ALL ON *.* TO ‘jack’@’%’

  3. FLUSH PRIVILEGES

  也足以向来用下边两条命令:

  1. grant all on 数据库.* to 用户名@登6主机 identified by “密码”
  2. flush PRIVILEGES

表信息

  1. 查看表的开创语句:SHOW CREATE TABLE `mysql`.`user`;
  2. 删除表:DROP TABLE `mysql`.`user`;
  3. 重命名或移动表:RENAME TABLE FROM `mysql`.`user`
    TO `test`.`user`
  4. 查看表结构:DESC `mysql`.`user`;
  5. 翻开列音信:SHOW COLUMNS FROM  `mysql`.`user` LIKE Pattern
  6. 添加列:ALTER TABLE `mysql`.`user` ADD COLUMN `gender`
    enum(‘M’,’F’),ADD COLUMN `age` int
  7. 删除列:ALTER TABLE `mysql`.`user` DROP
    COLUMN `gender`(暂不援助删除多列)
  8. 修改现存列的体系和采用:ALTE福特Explorer TABLE `mysql`.`user` MODIFY
    `gender` char(1) default 一;    
    注:一旦修改的列已经存在了违背约束的数额,那么修改失利
  9. 全然修改列音讯: ALTE本田UR-V TABLE `mysql`.`user` CHANGE `gender`
    `sex` enum(‘M’, ‘F’)
     注:无法只修改列名字。假诺只想修改名字,那么请带上原来的列类型选项

记录(行)之增加

  1. 一般来讲插入: INSERT INTO `users` VALUES ();                 #
    默感到空的也非得插入,否则那条语句语法就不能通过
  2. 钦定列插入:INSERT INTO  `users`  () VALUES ()                    
        # 插入钦定数量要求通晓如何无需钦定值
  3. 一回插入多行:INSERT INTO `users`
    VALUES (),()

备份与还原数据库

  1. 备份整个数据库   mysqldump -uroot -p123456database>new_database.sql
  2. 备份数据库某张表   mysqldump -uroot -p12345陆 database
    table>new_table.sql
  3. 复原数据库   mysqldump -uroot -p12345陆 database<new_database.sql
                   # 复苏时数据库必须存在,可以是空数据库
  4. 回复数据库表  登六进入数据库,然后USE选定数据库,用source导入      
                      

启动mysql

  命令:sudo service mysql restart 或者  sudo systemctl restart mysql

  注意:mysql的劳动进度名是mysql,所以命令不是sudo service mysqld
restart,大家常见不是一向动用mysqld的主次名来运维程序,因为那一个顺序恐怕须要有的犬牙相错的参数,我们借助systemctl
与 service 能够轻便处理有关命令

数据类型

  MySQL援助三种数据类型,重要有数值类型、日期/时间档期的顺序和字符串类型。

  1. 数值数据类型:包蕴整数类型TINYINT(一byte)、SMALLINT(二bytes)、MEDIUMINT(叁bytes)、INT(四bytes)、BIGINT(八bytes)、浮点小数数据类型FLOAT(四bytes)和DOUBLE(8bytes)、定点小数类型DEBoraL。#
    默许是有暗记的。参数是足以显示的最大位数
  2. 日期/时间项目:包含YEAKoleos(一byte)、TIME(三bytes)、DATE(3bytes)、DATETIME(8bytes)和TIMESTAMP(四bytes)
  3. 字符串类型:包罗CHACR-V、VA景逸SUVCHA福睿斯、BINA凯雷德Y、VARBINA哈弗Y、BLOB、TEXT、ENUM和SET等

  YEA昂科威的日子格式是YYYY, TIME的日期格式是HH:MM:SS,
DATE的日期格式是YYYY-MM-DD, DATETIME的日子格式是YYYY-MM-DD
HH:MM:SS,TIMESTAMP的日期格式是YYYY-MM-DD HH:MM:SS。

  字符串类型括号里的参数意义正是字节数

键和索引

  mysql中能够把键就知晓为索引,索引正是为一些列,开支额外的半空中,来维持一个飞跃的数据结构,加速查找速度。注:加速只对点名的列有效

  功能键(约束键):1、主键     2、唯一键      3、外键

    非功效键(索引)

  1. 增多索引   ALTE奥迪Q三 TABLE `mysql`.`user` ADD INDEX(`age`)
  2. 剔除索引   ALTELX570 TABLE `mysql`.`user` DROP index `age`

准备

  ubantu系统,navicat for mysql软件

记录(行)之改

  UPDATE `users` SET `name`=’jack’ WHERE pattern

  注:常常在剔除在此以前,大家要留意大家的WHERE,同时,我们提议在剔除前,使用同壹的WHERESELECT先查询三遍

多表查询

  •  内联接(交叉连接)

    SELECT `s_name`, `c_flower`  FROM `classes`   INNER JOIN
`students`** ON `students`.`c_id` = `classes`.`c_id` WHERE `students`.`c_id` = 9;

    注:on是接二连3条件,where是筛选典型。也正是说,ON用来一连出有意义数据行的基准,WHERE是早就接二连三了未来,再筛选出立刻有亟待的数目

  •  外连接(左连接与右连接)

    SELECT * FROM FROM `classes`   LEFT JOIN `students`** ON `students`.`c_id` = `classes`.`c_id`

    注:左连接以左表为尺度,右连接以右表为标准。分化于内连接的是外接连必须求用ON连接条件

建库

  查看已有数据库:SHOW DATABASES;

  成立数据库: CREATE DATABASE `test` charset utf8(character set
utf8);

  查看数据库创设进程: SHOW CREATE DATABASE `test`;

  删除数据库:DROP DATABASE `test`

  修改数据库编码:ALTE福睿斯 DATABASE `test` charset utf8

  查看数据库版本号:status/select version()

 

  

     

 

  

  

  

 

 

 

配置mysql

  修改/etc/mysql/my.cnf文件,在文件末尾加上下述几条语句([]表示组)

  [client]

  default-character-set = utf8           #
钦定客户端编码,因为暗中同意的latin一不帮忙普通话,所以我们在此地采取utf八

 

  [mysqld]

  character-set-server = utf8            #
钦赐服务器端编码,经常设定为与客户端编码1致

  collation-server = utf8_general_ci         #
同一种编码也有两样的排序规则

  bind_address = 0.0.0.0                     #
第二层守护,监听全数IP

  配置文件改造时应超越做备份,更动成功之后须要再度开动来再度读取配置文件

  设置完毕后翻看编码音信与排序新闻

  1. SHOW VARIABLES LIKE ‘%char%’;
  2. SHOW VARIABLES LIKE ‘%colla%’;       

记录(行)之删除

  1. 清空表:DELETE FROM `users` WHERE 1
  2. 剔除钦赐行:DELETE FROM `users` WHERE pattern

  注:平日在剔除之前,大家要留意大家的WHERE,同时,我们提出在剔除前,使用同样的WHERESELECT先查询三回

 

  

引言

  mysql是基于c/s通讯框架结构划设想计的,用户通过客户端和服务器端实行交互,服务器端对数据库实行操作。轻便地以来,大家把sql语句传达给客户端,客户端把sql语句翻译成服务器端能够领略和能够实践的授命,服务器端遵照这么些指令对数据库进行查询操作,把操作结果传给客户端,客户端再把结果翻译成用户也正是大家得以看懂的原委。c/s架构的裨益之壹正是用户无需和服务器端打交道,也等于代表用户无需上学复杂的劳动器端命令,只须要学习简单的sql语句以及客户端命令就能够,客户端会帮大家举办指令的翻译等专业。mysql的c/s框架结构是二个劳务器端可对应八个客户端,对于mysql怎么差异不一致用户这里暂无需精晓。

  mysql是关系型数据库的①种,所以我们在布置数据库的时候自然要抓住东西之间的关联。大家现在设计网址的时候,差别的业务板块都应当有三个独门的框架结构或然数据库,我们得以把单独的板块领会为单独的网址。