-
创建一个数据表,用CREATE TABLE table_name(
column_name(注:这是列名的意思) data_type(注:数据类型),
....
)
注;列名的得出是通过项目的分析得出来的,不能凭空想象
查看全部 -
SELECT DATABASE();
用来显示当前打开的数据库
查看全部 -
用USE打开创建好的数据库
查看全部 -
外键约束的参照操作
查看全部 -
插入的记录可以是约束好的默认值,也可以是数学表达式,可以是函数。
INSERT address VALUES(DEFAULT,IF(1,'男','女'),DEFAULT,10+2*3);
查看全部 -
MySQL 子查询简介
2019-08-12
子查询(Subquery)是指出现在其他SQL语句内的SELECT子句
例如:
SELECT * FEOM t1 WHERE col1 = (SELECT col2 FROM t2);
其中SELECT * FROM t1 成为Outer Query/Outer Statement
SELECT col2 FROM t2,成为SubQuery
子查询指嵌套在查询内部,切必须始终出现在圆括号内
子查询可以包含多个关键字或条件
如DISTINCT, GROUP BY, ORDER BY, LIMIT ,函数等。
子查询的外层查询可以是SELECT, INSERT,UPDATE,SET或DO。
查看全部 -
对数据库的操作分为:
写操作:增删改
读操作:查
查看准备数据
(1)SELECT * FROM tdb_goods\G; // 网格形式输出查询结果
(2)由于存储时使用的编码方式为utf-8格式;客户端默认的为GBK格式,所以
需要使用 SET NAMES GBK; 设置读取信息的编码格式。(存储数据的属性没有不变化)
解决乱码的问题:
1.show variables like "%char%";
类似set character_set_results=utf8;,能改的都改为uft8
2.在要创建的表后加ENGINE=InnoDB DEFAULT CHARSET=utf8;
解决乱码的问题:
----------------------------------------------------------------------------------------------------------------------------------------
1.MySQL中默认字符集的设置有四级:服务器级,数据库级,表级。最终是字段级的字符集设置。注意前三种均为默认设置,并不代表你的字段最终会使用这个字符集设置。可以通过how create table table;或show full fields from tableName;来检查当前表中字段的字符集设置。
2.表创建后,再修改字段的字符集设置不影响已经插入的数据.
所以才会出在查看字段时出现中文乱码.此时就只能用:set NAMES‘utf8/gbk(用字段插入是所用的相应代码,且这个命令行并不影响服务器端数据)来查看中文内容
当数据库和数据表的编码不一样时,可能插入中文会出现乱码!排插步骤如下:(以utf8为例)
第一步:SHOW CREATE DATABASE XXXX;(我的是SHOW CREATE DATABASE test;)
查看你创建的数据库是否是:DEFAULT CHARACTER SET utf8
第二步:show create table xxxx
查看你创建的数据表是否是DEFAULT CHARSET=UTF8
第三步:
打开my.ini
在[client]节点下添加
default-character-set=utf8
在[mysqld]节点下添加
character-set-server=utf8
collation-server=utf8_general_ci保存,重启mysql!
再 mysql>show variables like 'char%';查看是否是下面一样:
|character_set_client|utf8
|character_set_connection|utf8
|character_set_database|utf8
|character_set_filesystem|binary
|character_set_results|utf8
|character_set_server|utf8
|character_set_system|utf8
|character_sets_dir|/opt/mysql-cluster/share/mysql/charsets/
按以上步骤执行后,重新创建数据库imooc和表tdb_goods,就可以插入中文了!
查看全部 -
4-11limit语句限制查询数量:
1、限制查询结果返回的数量:
SELECT * FROM users LIMIT 2;返回前两条数据
SELECT * FROM users LIMIT 2,2;是指从下标2(下标从0开始算)(即是第三条记录开始)开始,返回两条记录
insert [into] 表名 set 字段={...},...
insert 目的表(字段名) select 字段名 from 原表名 where 另一字段 >=30; 把select后查出表中满足条件的字段数据插入到目的表中
limit 0,2 ---0代表第一行,2代表显示几行
查看全部 -
having语句设置分组条件:
可以只对某一部分进行分组
SELECT sex,age FROM users GROUP BY 1 HAVING age >35;
having语句规定having后面的要么是一个聚合函数,要么该字段需要在select后面的字段中出现,否则会报错
聚合函数则max、min等
having 语句分组,用在group by后面追加条件,判断式中的字段是必须出现在前面select中的 或者是可以包含没有出现在前面查询中的字段的一个聚合函数count(),max()等等
1、其实老师的意思是,我们在分组的时候,sex值相同的会放在一组,所以这里只有两个不一样的组,值=0的组和组=null的组。
2、我们在使用hvaing count(id)>=2的时候(2代表的是 id(即不同的条数)条数sex出现相同的次数),就是我们根据id来做条件,千万不要吧>=2和sex的具体值来比较。因为它是出现相同的次数。
3、因为sex值为0的条数大于等于2条(老师数据表中1/2/3/4/5/6/7/8条的sex都是0)。而null只有一条。所以这里的查询后的结果是0分组。查看全部 -
查询结果分组 GROUP BY
[GROUP BY {col_name|position} [ASC|DESC],...]
ASC:升序,默认
DESC:降序
position:SELECT语句中列的序号
mysql中GROUP BY语句对查询结果分组:
SELECT sex FROM users GROUP BY sex; #按照sex字段进行分组查询
SELECT sex FROM users GROUP BY 1; #按照目标分组字段sex在select语句中出现的顺序的进行分组查询
查看全部 -
主键在创建的时候会自动创建索引,外键在创建的时候也会自动创建索引。所以当参照列不是主键的时候不会自动创建索引,需要手动创建
查看全部 -
1、查询表达式:
SELECT username,id FROM users;
SELECT id AS userid FROM users;
select查询语句中字段的顺序将会影响查询结果的字段顺序;
select查询语句中字段的别名将会影响查询结果的字段名称;
SELECT
查询表达式
每一个表达式表示想要的一列,必须有至少一个
多个列之间以英文都要分割
星号(*)表示所有列。tbl_name.*可以表示命名表的所有列
查询表达式可以使用[AS]alias_name为其赋予别名
查看全部 -
外键约束的要求
查看全部 -
更新记录(单表更新)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr|DEFAULT}[,col_name2={expr|DEFAULT}]...[WHERE where_condition]
UPDATE users set age+=5; #所有的记录年龄都改成原来的年龄加5
UPDATE users set age=age-id ,sex=0; #同时更新age和sex字段
UPDATE users set age=age+10 where id%2=0; #带条件的更新
查看全部 -
INSERT
插入记录
INSERT [INTO] tbl_name SET col_name = {expr|DEFAULT},...
说明:与第一种方式的区别在于,此方法可以使用子查询(SubQuery)
将A表语句插入到B表中
INSERT B SELECT 语句名 FROM A [WHERE 条件]
查看全部
举报