MySQL基础
文章平均质量分 51
黄复贵
To be an outstanding geek.
展开
-
连接实现多表更新与查询
子查询(二):分析:简单查看表中的内容,可以看到有很多重复的数据。例如goods_cate字段中光’笔记本配件’就重复了好几次,而一般情况下汉字所占的字节数比数字占的字节数多(GBK 编码中,一个汉字字符存储需要2个字节。UTF-8编码中,一个汉字字符储存需要3到4个字节。而当规定数字类型为TINYINT时,只占用1个字节),当记录数目很庞大的时候重复的数据就会占用很多内存空间。可以新建一张数据原创 2016-07-10 20:07:43 · 4064 阅读 · 0 评论 -
MySQL数据类型
熟悉掌握mysql数据类型,开发过程选择最合适的数据类型,对数据库优化,节省内存等有极大的作用。整型:例如存储年龄的时候可以使用字节为1的TINYINT而不是长度为4个字节的INT更不是长度为8个字节的BIGINT,这样当记录条数很多很多的时候,TINYINT的优势就可以体现出来,节省了服务器很多内存。浮点型:若是FLOAT(7,2),最大的存储浮点数为:99999.99日期型:范围: YEAR原创 2016-07-04 15:53:42 · 1366 阅读 · 0 评论 -
MySQL创建与查看数据表
通过SHOW DATABASES;查看我们的数据库中有哪些表:其中t1是之前创建好的数据库,暂且为空。通过USE t1;指定使用数据库t1,且通过SELECT DATABASE();可以查看已经成功指定使用数据库t1:通过CREATE TABLE tb1(…);等命令创建数据表tb1(字段及其数据类型),并使用SHOW TABLES;命令查看当前数据库中有哪些表:SHOW COLUMNS FROM原创 2016-07-05 00:09:01 · 922 阅读 · 0 评论 -
MySQL空值与非空
NULL,字段值可以为空 NOT NULL,字段值禁止为空,必须赋值用NOT NULL定义数据表中某个字段,使该字段禁止为空;不写则就是NULL可以为空。 往表中插入数据:注意插入数据的语句语法!INTO可以省略,且只有在VALUES内写入全部字段的值,在前面才不用匹配字段名。第一条插入语句username给了值,而age值为空,可以成功插入数据。第二条插入语句username为NULL,原创 2016-07-05 10:32:23 · 2864 阅读 · 0 评论 -
主键约束,唯一约束与默认约束
主键约束:PRIMARY KEY每张数据表只能存在一个主键主键保证记录的唯一性主键自动为NOT NULLAUTO_INCREMENT自动编号,且必须与主键一起使用。但是主键不一定要和AUTO_INCREMENT一起使用默认情况下,起始值为1,每次的增量为1AUTO_INCREMENT与PRIMARY KEY一起使用:插入数据(不需要插入主键的值,因为与AUTO_INCREMENT一起使原创 2016-07-05 11:21:42 · 10693 阅读 · 0 评论 -
理解事务的4种隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,原创 2016-07-16 16:19:20 · 195971 阅读 · 87 评论 -
外键约束
约束:约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括:NOT NULL,PRIMARY KEY,UNIQUE KEY,DEFAULT,FOREIGN KEY外键约束(实现一对一或一对多关系)要求:父表与子表必须具有相同的存储引擎,而且禁用使用临时表数据表的存储引擎必须为InnoDB外键列与参照列必须具有相似的数据类型,其中数字的长度或有无符号位必须相同,而字符的长度原创 2016-07-07 21:11:17 · 6358 阅读 · 0 评论 -
索引
数据库索引的概念:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速定位数据库表中的特定信息。索引是一种数据结构。DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行,大大减少遍历匹配的行数,所以能明显增加查询的速度。来分析这张图片,为Col2列建立了索引,原创 2016-07-17 22:15:34 · 831 阅读 · 0 评论 -
修改数据表
添加单列: ALTER TABLE 表名 ADD … 位置;若没有位置关键字,则默认添加到最后一列,AFTER username添加到字段username后,FIRST添加到第一列。删除单列:ALTER TABLE users1 DROP 列名ALTER TABLE users1 DROP 列名1,DROP 列名2;添加主键约束:先添加id列,再在该表的基础上ADD PRIMARY KE原创 2016-07-08 16:14:27 · 662 阅读 · 0 评论 -
SHOW DATABASES;回车后数据库不全与Access denied ERROR
在用命令行操作mysql时遇到了Access denied for user ”@’localhost’ to database ‘…’这个问题,即没有访问权限。先说说这里用的mysql是集成于Wamp的,在安装Wamp后就有mysql服务了。将wamp下mysql的bin文件夹路径配置到系统变量后,打开cmd命令行输入mysql后回车:显示已经登录成功。想要创建一个名字为t1的数据库,在命令行输入原创 2016-07-04 12:07:47 · 3352 阅读 · 0 评论 -
MySQL常用命令
登录(用户名为root,密码为空):mysql -u root查看用户:SELECT USER();查看权限:SHOW GRANTS;查看全部数据库(名字):SHOW DATABASES;新建数据库:CREATE DATABASE t1 CHARACTER SET utf8;查看数据库编码格式:SHOW CREATE DATABASE t1;修改数据库编码方式: ALTER DATABASE t1原创 2016-07-04 15:30:12 · 503 阅读 · 0 评论 -
子查询
子查询(Subquery)是指出现在其他SQL语句内的SELECT子句结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。子查询嵌套在查询内部,且必须始终出现在圆括号内。其外层查询可以是:SELECT,INSERT,UPDATE,S原创 2016-07-10 20:05:34 · 778 阅读 · 0 评论 -
数值运算符
CEIL与FLOOR进一取整与舍一取整:DIV整数除法:MOD取余数(取模):POWER幂运算:ROUND保留小数(自动四舍五入):TRUNCATE数字截取:原创 2016-07-11 21:53:34 · 782 阅读 · 0 评论 -
MySQL字符函数
CONCAT字符连接: CONCAT_WS使用指定的分隔符进行字符连接:FORMAT数字格式化,返回类型为字符型:LOWER与UPPER大小写转换:LEFT与RIGHT选取左边或右边的指定位数的字符:LENGTH获取字符串长度,空格长度为1:LTRIM与RTRIM删除前导空格与后续空格:TRIM同时删除前导后续空格,中间的空格删除不了: 删除指定字符(BOTH关键字时中间的指定字符删除不了):R原创 2016-07-11 14:57:33 · 390 阅读 · 0 评论 -
多表删除
阅读本博客之前请确保已经阅读并理解:连接实现多表更新与查询1.通过查询可以发现tdb_goods表中有商品名字重复的商品,应该删除通过左外连接删除了goods_id比较大的重复的商品,结果显示有两条记录被删除再以相同的方式查看是否有重复名字的商品时,发现没有重复的商品原创 2016-07-10 20:58:01 · 416 阅读 · 0 评论 -
比较运算符
BETWEEN … AND …数值闭区间:IN是否包含:IS NULL判断是否为空,空字符串不为空:原创 2016-07-12 09:58:27 · 440 阅读 · 0 评论 -
日期时间函数
NOW()取当前具体时间:CURDATE()取当前日期:CURTIME()取当前时间:DATE_ADD()获得指定日期加上(或减去)指定日期后得到的日期:DATEDIFF()获得两个指定日期的差值:DATE_FORMAT()修改日期格式:%m代表月份,%d代表天,%Y代表年(其中月份与天有前导0)原创 2016-07-12 10:50:43 · 445 阅读 · 0 评论 -
聚合函数
AVG()求平均值:COUNT()查看记录有多少条:MAX()求最大值:MIN()求最小值:SUM()求和:原创 2016-07-12 11:32:55 · 438 阅读 · 0 评论 -
MySQL存储过程
普通的SQL执行过程:SQL命令要经过MySQL引擎的语法分析,如果语法正确,就会进行编译,编译成mysql引擎可以识别的命令。可识别命令再执行,将执行的结果返回给客户端。试想如果把语法分析与编译的环节去掉,mysql的执行效率就可以提高,因此要用到存储过程。存储过程:存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程的效率要比单一的SQL执行效率高。以往我们写两原创 2016-07-12 20:53:57 · 1337 阅读 · 0 评论 -
操作数据表中的记录(增删改查)
插入数据: INTO关键字可以省略,若没有指明字段,VALUES内一定要匹配所有值,哪怕是默认自增的id字段默认的自增id字段可以写为NULL,也可以写成DEFAULT,数字字段可以进行运算插入(例3*7-5)由于新建数据表时age的默认值为20,因此在插入数据时age字段可以使用DEFAULT关键字,插入数据后,值为20新建数据表时,id是默认自增字段,username不能为空,pass原创 2016-07-09 11:15:20 · 5555 阅读 · 0 评论