数据库之mysql

作者: 数据库信息  发布:2019-08-07

准备

  ubantu系统,navicat for mysql软件

引言

  mysql是依照c/s通讯架构划设想计的,用户通过客户端和服务器端实行交互,服务器端对数据库进行操作。简单地以来,大家把sql语句传达给客户端,客户端把sql语句翻译成服务器端能够知道和能够实行的通令,服务器端根据那几个指令对数据库进行查询操作,把操作结果传给客户端,客户端再把结果翻译成用户也正是我们得以看懂的内容。c/s架构的功利之一正是用户无需和服务器端打交道,也正是代表用户无需学习复杂的劳动器端命令,只必要上学简单的sql语句以及客户端命令就可以,客户端会帮大家开始展览指令的翻译等职业。mysql的c/s架构是一个劳动器端可对应四个客户端,对于mysql怎么分化不一致用户这里暂无需掌握。

  mysql是关系型数据库的一种,所以咱们在计划数据库的时候肯定要掀起东西之间的关系。大家随后设计网站的时候,分化的事务板块都应该有三个独门的架构大概数据库,大家得以把单独的板块精晓为单身的网址。

安装mysql

  命令:sudo apt install mysql-server

配置mysql

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

  [client]

  default-character-set = utf8           # 钦点客户端编码,因为暗中认可的latin1不支持汉语,所以我们在此处选用utf8

 

  [mysqld]

  character-set-server = utf8            # 钦点服务器端编码,平日设定为与客户端编码一致

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

  bind_address = 0.0.0.0                     # 第一层守护,监听全体IP

  配置文件改动时应抢先做备份,更动完成今后要求再行启航来重新读取配置文件

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

  1. SHOW VARIABLES LIKE '%char%';
  2. SHOW VARIABLES LIKE '%colla%';       

启动mysql

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

  注意:mysql的劳动进程名是mysql,所以命令不是sudo service mysqld restart,我们普通不是直接接纳mysqld的程序名来运维程序,因为那几个顺序恐怕须求一些头晕目眩的参数,我们借助systemctl 与 service 能够轻便管理相关命令

navicat连接mysql

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

  1. CREATE USER 'jack'@'%' IDENTIFIED BY '123456'   # jack是用户名,%是任性主机,123456是密码

  2. GRANT ALL ON *.* TO 'jack'@'%'

  3. FLUSH PRIVILEGES

  也能够向来用上边两条命令:

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

建库

  查看已有数据库:SHOW DATABASES;

  创造数据库: CREATE DATABASE `test` charset utf8(character set utf8);

  查看数据库创立进度: SHOW CREATE DATABASE `test`;

  删除数据库:DROP DATABASE `test`

  修改数据库编码:ALTE昂Cora DATABASE `test` charset utf8

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

备份与回复数据库

  1. 备份整个数据库   mysqldump -uroot -p123456 database>new_database.sql
  2. 备份数据库某张表   mysqldump -uroot -p123456 database table>new_table.sql
  3. 东山复起数据库   mysqldump -uroot -p123456 database<new_database.sql                # 苏醒时数据库必须存在,能够是空数据库
  4. 平复数据库表  登陆步向数据库,然后USE选定数据库,用source导入                         

建表

  数据库中的表在用户层也正是二维的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=utf8_general_ci不区分大小写,查询快  collate=utf8_genaral_bin区    分大小写,排序速度慢;每种表度供给二个primary key(主键独一且为非空);char()分配一定长度,    varchar()是最大尺寸可变的,质量绝对非常差
  •  数据库引擎:1、myisam   非事务型,查询快  2、innodb   事务型,修改快,暗中同意引擎(功效壮大)
  •  数据库表、列和数据库同样,能够独自地设置字符集与排序准绳
  •  不钦命列的default时暗许会default null。
  •  关于字符集编码假如不钦赐就存在继续现象:列搜索表的编码,表搜索库的编码,库搜索配置文件编码
  •  数据库的每叁个字段都必须有一定类型
  •  mysql的中间叁个条条框框是名字(字段名也是名字)要加反引号
  •    c  裁撤命令(cancle)    G 把列多少逐行展现
  •    主键独一且非空,然则唯一且非空不自然是主键
  •    建表有个套路就是用未有实际意义的id当作主键
  •    注册的时候怎样字段可以为空,哪些可以为空依照实际须求来定
  •    AUTO_INCREMENT 须要和INT结合使用,有了AUTO_INCREMENT能够不内定id举行插队
  •    唯有ALTE奥德赛、RENAME、CREATE等关键字要接DATABASE 以及TABLE
  •    实体之间的关系分成三种:一对一;一对多;多对多。区分这两种关系可以通过画画来评释。
  •    一对多:使用外键自律来落到实处
  •    一对一:使用外键 UNIQUE KEY来兑现
  •    多对多:使用外键 第三方表来完成

澳门金莎娱乐网站 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

表信息

  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奥迪Q5 TABLE `mysql`.`user` MODIFY `gender` char(1) default 1;     注:一旦修改的列已经存在了违背约束的数据,那么修改战败
  9. 全然修改列消息: ALTE安德拉 TABLE `mysql`.`user` CHANGE `gender` `sex` enum('M', 'F')  注:不能够只修改列名字。尽管只想修改名字,那么请带上原本的列类型选项

数据类型

  MySQL扶助七种数据类型,首要有数值类型、日期/时间档案的次序和字符串类型。

  1. 数值数据类型:包含整数类型TINYINT(1byte)、SMALLINT(2bytes)、MEDIUMINT(3bytes)、INT(4bytes)、BIGINT(8bytes)、浮点小数数据类型FLOAT(4bytes)和DOUBLE(8bytes)、定点小数类型DE迈腾L。# 私下认可是有旗号的。参数是足以体现的最大位数
  2. 日期/时间档期的顺序:包涵YEA酷路泽(1byte)、TIME(3bytes)、DATE(3bytes)、DATETIME(8bytes)和TIMESTAMP(4bytes)
  3. 字符串类型:富含CHALX570、VARCHAWrangler、BINAENVISIONY、VARBINAEscortY、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普拉多 TABLE `mysql`.`user` ADD INDEX(`age`)
  2. 删除索引   ALTEWrangler TABLE `mysql`.`user` DROP index `age`

记录(行)之增加

  1. 一般来讲插入: INSERT INTO `users` VALUES ();                 # 默感觉空的也必须插入,不然这条语句语法就无法透过
  2. 钦定列插入:INSERT INTO  `users`  () VALUES ()                         # 插入钦命数量须求明白如何不必要钦定值
  3. 一遍插入多行:INSERT INTO `users` VALUES (),()

记录(行)之删除

  1. 清空表:DELETE FROM `users` WHERE 1
  2. 删去钦命行:DELETE FROM `users` WHERE pattern

  注:常常在剔除从前,我们要细心大家的WHERE,同有时候,大家提议在剔除前,使用一样的WHERESELECT先查询一次

记录(行)之改

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

  注:经常在剔除此前,我们要留心大家的WHERE,同有时间,大家提议在剔除前,使用一样的WHERESELECT先查询一回

记录(行)之查

  1. 总体查询:  SELECT * FROM `users` WHERE 1
  2. 点名列查询: SELECT Column1,Column2 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`

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

多表查询

  •  内联接(交叉连接)

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

    注:on是接连条件,where是筛选规范。也便是说,ON用来连接出有意义数据行的基准,WHERE是早就一而再精通后,再筛选出立时有亟待的数量

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

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

    注:左连接以左表为尺度,右连接以右表为规范。区别于内连接的是外接连应当要用ON连接条件

 

  

     

 

  

  

  

 

 

 

 

  

本文由金沙澳门官网发布于数据库信息,转载请注明出处:数据库之mysql

关键词: 金沙澳门官网