数据库6.22

三大主流关系型数据库:

Oracle        sql server    MySQL


数据库6.22_第1张图片




专业术语:

数据库(database):存储数据的仓库,简称为DB

数据库管理系统(database manger system),DBS

数据库系统(database system),DBS     DB+DBS====>  (软件)

MySQL是典型的关系型数据库

mysql安装:

             1、.msi   的安装:

                     下一步

              2、.zip 压缩包的安装

                         1、官网下载

                          2、解压压缩包(不要有中文和特殊字符)

                          3、修改my.ini (随机复制其中一个)文件

数据库6.22_第2张图片


修改basedir=mysql的主目录

修改datadir=mysql的主目录\data

数据库6.22_第3张图片

5、将mysql的bin配置到path中:

此电脑(右键)===>属性=====>高级===>环境变量====>path(上面是当前用户,下面是登录用户   win7 和win8需要在最后打个英文分号   然后将路径配置过去)

6、右键单击以管理员权限打开        将位置切换到mysql安装路径的bin目录下

7、注册服务:mysqld install  安装到电脑上的/  mysql  remove  移除(必须把服务先停止)

 8、启动服务:

               (1)、使用服务面板,手动启动

               (2)、window下启动服务(不用管位置)  net   start/stop/(linux下启动服务    service xxx  start/stop/restart/status)

                 (3)、进入mysql

liunx下安装:

          1、离线下载

           2、--atp(atp-get):

                        ubuntu:   sudo  apt-get install  mysql-server(服务器)mysql-client(客户端)


数据库6.22_第4张图片
数据库6.22_第5张图片
必须要输,以后的密码
数据库6.22_第6张图片

                         CenterOS:sudo yum  install  mysql-server(服务器)mysql

退出mysql:

exit、quit、\q、Ctrl+C

常见的mysql命令:

                           show databases; #此命令返回当前DBS系统中所有数据库

                           use dbName; #表示进入到对应名称的数据库中去

                            show tables; # 查看当前数据库下的所有表

                            desc/describe board;    # 查询一张已经存在表的结构

                            select * from tableName; # 表示查询tableName表的所有数据;

sql(structured query language)结构化查询语言

    sql:

         DDL(database defined language):数据库定义语言

         create drop show alter……

         DML(database Manipulation Language):数据库操作语言

         CRUD(create Retrieve update delete)

         insert

         update

         delete

   select---DQL

        DCL(database controller language):数据库控制语言

     grant invoke

创建数据库:

      create [database/table/index/function/cursor/view] 名称

      create database db_py1805 [default charset=utf8 ]

删除数据库

      drop [database/table/index/function/cursor/view] 名称

      drop database db_py1805;

创建表:

      create table 表名(

                            字段1 类型 [约束条件],

                             字段2 类型 [约束条件],

                               ……

                               字段n 类型 [约束条件]

                         )

create table t_user (

id int ,

username varchar(50),

age int,

gender varchar(5)

)

insert插入语句

insert into 表名(字段1,字段2,……,字段n) values(值1,值2,……,值n);

insert into t_user(id,username,age,gender) values(1,"zs",16,'nan');


配置mysql的远程登录:

1、到mysql 数据库   use  mysql

2、查询user    select   user from    user;


数据库6.22_第7张图片
数据库6.22_第8张图片
数据库6.22_第9张图片
在没有配置远程的情况下:  localhost  |root

3、修改root用户(现在只有一个root用户  所以修改   但一般情况下 只修改对应帐号)           update user  set   host=“%”   where  user=“root”;


数据库6.22_第10张图片
将bind-address 注掉
数据库6.22_第11张图片

在修改之后:还需要进入配置文件修改配置文件

4、修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf     找到43行

                                                                                        bind-address注释掉

5、重启mysql


创建表格:

create table t_hero (

                                id int primary key auto_increment,(主键    不能重复,不能为空  自动维护)

                                name varchar(50) not null,(不能为空)

                                age int default 40,(如果填入的不写,则默认填写40岁)

                                  gender varchar(5),

                                  nikename varchar(50) unique, -- 不能重复,

                                  address varchar(50),

                                  level int default 100

)

插入:

insert into 表名 values(xxxxx);

insert into 表名(字段……) values(xxxxx);

数据库6.22_第12张图片
数据库6.22_第13张图片

查询:

select * from tableName;  查询所有


数据库6.22_第14张图片

select [字段1,字段2,……,字段n] from tableName;


数据库6.22_第15张图片

select   version()  返回当前数据库的版本信息

select  now()返回当前时间

select   database()返回当前所在的数据库

name varchar(30)           lvbgfbjk         小于30的时候自动做成自己的长度

name char(30)            lvbgfbjk         小于30的时候也占30


日期date(只能表示年月日) time(只能表示时分秒)    datatime  (年月日时分秒)


数据库6.22_第16张图片


数据库6.22_第17张图片

grant语句的使用:

grant all on db_py05.* to 'xxx'@'localhost' identified by '543245';

grant all(权限) on db_py05(某个数据库).*(某张表) to “xxx”(用户名称     表示创建)@'localhost'(表示只能远程登录  %    表示可以远程登录) identified by '55655'(密码);

grant all on *.* to 'root'@'%' identified by '123456';


更新

update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition]

update tableName set 字段1=新值,字段2=新值,字段3=新值 [where condition] 必须跟条件,否则全表更新


数据库6.22_第18张图片

删除

delete from tableName  [where condition]   必须带条件,不带条件则全表清空

数据库6.22_第19张图片

truncate  [table]  tablename; 删除 慎用    不可逆的 常规手段是不可恢复的

修改

alter的操作

   修改类型    alter table t_user modify type text;


数据库6.22_第20张图片

 增加一个字段     alter table t_user add type int;

alter table t_user add (添加)type(列名字) int(类型);


数据库6.22_第21张图片

删除一个字段  alter table t_user drop type;

数据库6.22_第22张图片

数据库的备份:

               mysqldump:在bin目录下

                          mysqldump 命令

                                mysqldump –u root –p dbname > 保存路径.sql

                                  mysqldump –u root –p db_bbs > d:/db_bbs.bak.sql将数据库db_bbs以脚本的形式保存到D盘]

将sql脚本还原为数据库

               mysql –u root –p dbname < 保存路径

mysql 的单表条件查询:

1、查询id为1的用户:select * from t_user where id=1;


数据库6.22_第23张图片


2、查询id大于等于3的用户:select * from t_user where id>=3;


数据库6.22_第24张图片

3、查询id不为3的用户:

                      select * FROM t_user WHERE id != 3;

                       select * FROM t_user WHERE id <> 3;

4、查询年龄大于10并且姓名为张三的人的性别:

                         SELECT gender FROM t_user where age > 10 AND username = '张三';

5、查询年龄大于等于20 或者性别是男的人的详情

SELECT * FROM t_user WHERE age >= 20 OR gender = '男';

6、查询性别为空

注意:在sql中,判断为空,或者判断不为空,需要使用is,而不是等于符号

SELECT * FROM t_user where gender is null;

SELECT * FROM t_user where gender is not null;

7、查询所有人的年龄的和

SELECT SUM(age) FROM t_user;

8、找出年龄最大的那个哥们

SELECT max(age) FROM t_user;

9、找出年龄最大的那个姐们

SELECT min(age) FROM t_user;

10、求当前所有人的平均年龄

SELECT avg(age) FROM t_user;

11、 共有多少人?

SELECT count(*) FROM t_user;

12、共有多少人?

SELECT count(*) as counts FROM t_user;

13、 共有多少人?

SELECT count(*) counts FROM t_user;

14、年龄大于16 并且 年龄小于 20岁

SELECT * FROM t_user where age >= 16 AND age <= 20;

15、年龄大于16 并且 年龄小于 20岁

SELECT * FROM t_user where age BETWEEN 16 AND 20;

16、 查询年龄为5 8 16 20 30 50的人

SELECT * from t_user where age in (5,8,16,20,30,50);

17、 查询年龄为5 8 16 20 30 50的人

SELECT * from t_user where age not in (5,8,16,20,30,50);

 模糊查询  like

1、 查询姓王的人

SELECT * FROM t_user where username LIKE '王%'

2、 查询名称中第二个字是建的

SELECT * FROM t_user where username LIKE '_建%'

SELECT * FROM t_user where username LIKE '%哥%'

SELECT * FROM t_user;

3、 排序

-- 查询所有用户,默认使用年龄升序排列

SELECT * FROM t_user order by age ;

SELECT * FROM t_user where age > 10 order by age asc;

SELECT * FROM t_user where age > 10 order by age desc;

SELECT * FROM t_user where age > 10 order by age desc, id asc;

4、分组

 统计当前男生有多少人,女生多少人

SELECT count(gender) FROM t_user;

SELECT gender,count(*) FROM t_user group by gender;

SELECT age FROM t_user GROUP BY age;

 通过性别进行分组,得到组员多余3人的

having 必须是出现group by之后,它是对分组结果进行筛选

SELECT gender,count(*) as counts FROM t_user group by gender having counts > 3;

SELECT * FROM t_user LIMIT 5;

SELECT * FROM t_user LIMIT 0,2;

SELECT * FROM t_user LIMIT 2,2;

SELECT * FROM t_user LIMIT 4,2;

你可能感兴趣的:(数据库6.22)