MySQL数据库操作及SQL语句笔记

2017-01-12 19:06:02来源:CSDN作者:qq_34475058人点击

由于开发Android的Sql语句都是封装好的,很少用到,又因为要接触点后台开发,所以最近写个Sql语句防止忘记吧。
如果你在电脑上没安装可视化数据库操作,需要在cmd命令行输入命令操作数据库,那么可能会用以下命令

(1)连接数据库    * 打开cmd窗口,使用命令,连接mysql数据库    * 命令: mysql -u root -p 密码    -u username    -p  password        (2)创建数据库    * 语句: create database 数据库的名称;    ** 示例:create database testdb1;(3)查看所有的数据库    * 语句:show databases;(4)删除数据库    * 语句:drop database 要删除的数据库的名称;    ** 示例: drop database testdb1;(5)切换数据库    * 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库    * 语句:use 要切换的数据库的名称;    ** 示例:use testdb2;(6)产看数据库的码表。    show create database 表名; 

下面是关于SQL语句的笔记

1)创建数据库表    * 语句 create table 表名称 (        字段 类型,        字段 类型          )    * 创建表 user,字段  id  username  password  sex    create table user (        id int,        username varchar(40),        password varchar(40),        sex varchar(30)    )(2)mysql的数据类型    字符串型     VARCHAR、CHAR    * 当创建表时候,使用字符串类型,name varchar(40),指定数据的长度    * varchar和char的区别    ** varchar的长度是可变的,比如 name varchar(5),存值 a ,直接把a存进去  //a<5(a不能超过5)    ** char的长度是固定的,比如 name char(5),存值 b,把b存进去,后面加很多空格  //b<5(b也不能超过5)    大数据类型    BLOB、TEXT    * 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件的路径    数值型    TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE    * 对应java里面    byte       short    int  long    float  double    逻辑性     BIT    * 类似java里面的boolean    日期型    DATE:用于表示日期 1945-08-15    TIME:用于表示时间 19:10:40    下面的两个类型可以表示日期和时间    DATETIME:手动添加时间到数据表里面    TIMESTAMP:自动把时间添加到表里面(3)查看表结构    * 语句 desc 表名称;    +----------+-------------+------+-----+---------+-------+    | Field    | Type        | Null | Key | Default | Extra |    +----------+-------------+------+-----+---------+-------+    | id       | int(11)     | YES  |     | NULL    |       |    | username | varchar(40) | YES  |     | NULL    |       |    | password | varchar(40) | YES  |     | NULL    |       |    | sex      | varchar(30) | YES  |     | NULL    |       |    +----------+-------------+------+-----+---------+-------+(4)mysql的约束有三种    第一种,非空约束 not null        * 表示数据不能为空    第二种,唯一性约束 unique        * 表中的记录不能重复的    第三种,主键约束 primary key        * 表示非空,唯一性        * 自动增长 auto_increment(5)创建带约束的表    create table person (        id int primary key ,        username varchar(40) not null,        sex varchar(20)    )    +----------+-------------+------+-----+---------+-------+    | Field    | Type        | Null | Key | Default | Extra |    +----------+-------------+------+-----+---------+-------+    | id       | int(11)     | NO   | PRI | NULL    |       |    | username | varchar(40) | NO   |     | NULL    |       |    | sex      | varchar(20) | YES  |     | NULL    |       |    +----------+-------------+------+-----+---------+-------+(6)删除表    * 语句 drop table 要删除表的名称;(7)查看当前的数据库里面有哪些表    * 语句 show tables;使用sql对表中的记录进行操作(增删改查操作)    (1)向表里面添加记录 insert    * 语句 insert into 要添加的表名称 values(要添加的值);    * 注意:当添加的字段的数据类型是int类型,直接写值    如果添加的字段的类型是varchar类型和日期类型,使用单引号把值包起来    * 例如:向user表里面添加记录    insert into user values(1,'aaa','123456','nan');    * 自动增长的效果    ** 创建一个表    create table stu (        id int primary key atuo_increment,        sname varchar(40)    )    insert into stu values(null,'aaa');    (2)修改表里面的记录 update    * 语句 update 表名称 set 要修改的字段的名称1=修改的值1,要修改的字段的名称2=修改的值2 where 条件    * 例如:修改user表里面id=1的username修改为QQQ,修改password为999    update user set username='QQQ',password='999' where id=1;    (3)删除表里面的记录 delete    * 语句 delete from 表名称 where 条件    * 例如:删除user表里面id=1的记录    delete from user where id=1;    ** 不添加where条件,把表里面的所有的记录都删除    (4)查询表中的记录 select    * 语句 select 要查询的字段的名称 (*) from 表名称 where 条件    * create table user (        id int,        username varchar(40),        chinese int,        english int    )    * insert into user values(1,'lucy',100,30);    insert into user values(2,'mary',60,80);    insert into user values(3,'jack',90,20);    * 例如一:查询user表里面的所有的数据    select * from user;    * 例如二:查询user表里面用户名和语文成绩    select username,chinese from user;    * 例如三:查询user表里面id=2的数据    select * from user where id=2;    (4)别名    * as 别名    select username as u1,chinese as c1 from user;    (5distinct,去除表里面重复记录    * 语句 select distinct * from 表名;    (6where子句    一,运算符 < > >= <=    * 例如:查询user表里面语文成绩大于60的所有的人员    select * from user where chinese > 60;    二,in:指定的数    * 例如:查询user表里面英语成绩是8090的人员的信息    select * from user where english in (80,90);    三,and:在where里面如果有多个条件,表示多个条件同时满足    * 例如:查询user表里面语文成绩是100,并且英语成绩是30的人员的信息    select * from user where chinese=100 and english=30; //对于同一个人的英语成绩及语文成绩同时满足    四,得到区间范围的值    * 例如:查询user表里面语文成绩在70-100之间的值    写法一,select * from user where chinese >=70 and chinese <=100;    写法二,select * from user where chinese between 70 and 100;    五,like:模糊查询    * 例如:查询user表里面username包含a的人员信息    select * from user where username like '%a%';    % :表示查询匹配 0-N个字符     _  表示匹配任意一个字符    (7)查看当前的运行的数据库    select database();    (8)对表中查询的记录排序 order by    * order by写在select语句的最后    第一,升序 order by 要排序字段 ascasc可以省略,默认的情况下就是升序)    * 例如:对user表里面查询的数据,根据语文成绩进行升序排列    select * from user order by chinese asc;    第二,降序 order by 要排序字段 desc    * 例如:对user表里面的英语成绩进行降序排列    select * from user order by english desc;8、聚集函数    (1)使用提供一些函数,直接实现某些功能    (2)常用的聚集函数    第一,count()函数    * 根据查询的结果,统计记录数    * 写法 select count(*) from ...where....    * 例如一;查询user表里面有多少条记录    select count(*) from user;    * 例如二:查询user表里面语文成绩大于60的人员有多少    select count(*) from user where chinese>60;    第二,sum()函数    * 求和的函数    * 写法 select sum(要进行求和字段) from ...where....    * 例如一:得到user表里面的语文的总成绩    select sum(chinese) from user;    * 例如二:得到user表里面语文总成绩,英语的总成绩    select sum(chinese),sum(english) from user;    * 例如三:得到user表里面语文成绩的平均分(总的成绩/总的人数)     select sum(chinese)/count(*) from user;    第三,avg()函数    * 计算的平均数的函数    * 写法 select avg(要计算平均数的字段名称) from ...    * 例如:得到user表里面语文成绩的平均分    select avg(chinese) from user;    第四,max()函数:计算最大值    * 写法 select max(字段) from...    第五,min()函数:计算最小值    * 写法 select min(字段) from...    * 例如:得到user表里面语文成绩的最高分数,英语的成绩最低分数    select max(chinese),min(english) from user;9、分组操作      分组使用 group by 根据分组的字段    在分组的基础之上再进行条件的判断 having,后面可以写聚集函数    (1)例如说明    * 创建表 orders    create table orders (        id int,        name varchar(40),        price int    )    insert into orders values(1,'电视',2000);       insert into orders values(2,'电视',2000);    insert into orders values(3,'苹果',10);    insert into orders values(4,'手机',500);    insert into orders values(5,'手机',500);    insert into orders values(6,'鼠标',33);    insert into orders values(7,'鼠标',33);    (2)例如一:统计orders表里面每类商品的总的价格    select name,sum(price) from orders group by name;    (3)例如二:对商品进行分类,得到每类商品的总价格大于66的商品    select name,sum(price) from orders where sum(price)>66 group by name;    = 上面的语句在逻辑上没有问题,在语法上,where里面不能写聚集函数,报错    正确的写法:    select name,sum(price) from orders group by price having sum(price)>66;mysql的关键字limit    (1)limit关键字查询表中的某几条记录    (2)limit关键字不是标准sql的关键字,只能在mysql数据库里面使用,实现分页的功能    * 在oracle里面特有关键字 rownum    * 在sqlserver里面特有关键字 top    (3)使用limit查询前几条记录     * 写法: limit 前几条记录  limit 3    * 例如:查询user表里面前三条记录    select * from user limit 3;    select * from user limit 0,3;    (4)使用limit查询第几条到第几条记录    * 写法: limit 第一个参数,第二个参数    ** 第一个参数开始的记录数的位置,从0开始的    ** 第二个参数从开始的位置向后获取几条记录    * 例如:查询user表里面第二条到第四条记录    select * from user limit 1,3;

修改MySql数据库的的密码

(1)知道密码,修改密码    第一,连接mysql数据库    第二,切换数据库 mysql  use mysql    第三,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';     第四,重新启动mysql服务

忘记MySQL数据库密码操作

忘记密码,重置密码     第一,把mysql的服务关闭                                  第二,打开cmd窗口,输入命令 mysqld --skip-grant-tables(不要加分号) //skip:跳过  grant:权限      第三,再打开cmd窗口,连接数据库,不需要输入密码  mysql -u root    第四,切换数据库 mysql  use mysql    第五,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';    第六,把两个cmd窗口都关闭,打开任务管理器,找到mysqld进程,结束     第七,启动mysql服务

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台