mysql 学习笔记1-基本命令

1、SQL简介:

Structured Query Language 结构化查询语言。
常用的数据库:
    a.Oracle 
    b.DB2
    c.MySQL
    d.SQL Server
    e.ProstgreSQL

2、安装好了mysql,登陆:

mysql -uroot -proot (-u是用户名,-p是密码,注意中间没有输入空格)
mysql -u root -proot (-u是用户名,-p是密码,注意-u中间有空格也可以)
mysql -u root -p root (-u是用户名,-p是密码,注意-p中间有空格会提示你输入密码)

注意:默认本地的  -h localhost可以不用输入。

3、修改默认的字符集:

我们安装mysql的时候如果选择默认的字符集 lantn1 (不支持中文),想改utf8怎么改?
a.直接修改my.ini配置文件
    default-character-set=utf8
    character-set-server=utf8
b.重启mysql服务:
    net stop mysql
    net start mysql
c.登陆mysql查看是否有更改过来: 
    show variables like "%character%";
成功OK。

还有一种直接在命令行里面修改
    mysql> SET character_set_client = utf8 ;  
    mysql> SET character_set_connection = utf8 ;   
    mysql> SET character_set_database = utf8 ;   
    mysql> SET character_set_results = utf8 ;    
    mysql> SET character_set_server = utf8 ;   

    mysql> SET collation_connection = utf8 ;  
    mysql> SET collation_database = utf8 ;   
    mysql> SET collation_server = utf8 ; 

如果你想使用界面配置:
    在 C:\Program Files\MySQL\MySQL Server 5.5\bin 目录下打开MySQLInstanceConfig.exe 这个程序

4、常用的sql语句:

show databases; 查看所有的数据库
create database mydb ;#创建数据库
use mydata; 使用数据库
drop database mydb ;#删除数据库
show tables;显示所有的表
show create database mydb ;#查看创建数据库的语句
alter database mydb character set utf8 ;#修改数据库mydb1的字符集为utf8

#创建表t
    create table t(
        id int ,
        name varchar(30)
    ) ;
    show create table t ;#查看创建表的源码

#创建表t1,使用字符集gbk
    create table t1(
        id int ,
        name varchar(30)
    )character set gbk ;

查看表的结构:
    desc t ;

插入数据:
    insert into t(id,name) values(1,'myname') ;
    insert t(id,name) values(2,'myname1') ;
    insert t4 values(3,'myname2'); #省略字段,意味着所有的字段都必须给值(自增例外)

更新数据:
    update t set name='myname_modify' where id = 1 ;#将表t的第1条记录姓名字段改为myname_modify

删除数据:
    delete from t ;#删除所有的记录
    delete from t where id = 1 ; #删除一条数据

修改表结构:
    alter table t add address varchar(100); #给表t增加一个字段address

查看数据:
    select * from t ; #查看所有数据
    select * from t where id = 2 ; #查看id=2这个记录
    select * from t where age >=20 and age <=30 ;#范围查询,查看年龄在20~30之间的人

    模糊查询:
    select * from 表名 where 字段名 like 字段表达式
    % 表示任意字符数
    _ 表示任意的一个字符
    [] 表示在某个区间
    select * from t where name like "%my%" ;//查询所有name字段里面,有my这个字符的记录

    给字段起别名:
    select id as 编号,english as 英语,history as 历史 from t ;

    查询结果排序(order by ):
    select * from score order by china asc;#升序排列
    select * from score order by history desc;#降序排列
    select * from score order by china asc,history desc; #组合排序,先排china,再排history

    除去重复的数据:
    select distinct name from t; #查询name字段值,把相同的名称过滤掉了

5、数据的完整性:

数据完整性是为了保证插入到数据中的数据是正确的,它防止了用户可能的输入错误。
分为三类:
    a.实体完整性:规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。
        主键的特点:不能为null,必须有值,且不能重复。
        主键分类:
            逻辑主键:不代表实际意义,只是区分不同记录用的。比如id
            业务主键:代表者具体的实际意义。比如身份证号  用户名
        例如:
        CREATE TABLE t(
            id int PRIMARY KEY auto_increment,#auto_increment 数据库自动增长
            name varchar(100)
        );

    b.域完整性:
        指数据库表的列(即字段)必须符合某种特定的数据类型或约束。
        非空约束:not null
        唯一约束:unique
        例如:
        CREATE TABLE t1(
            id int PRIMARY KEY auto_increment,
            username varchar(100) not null unique, 非空和唯一约束
            gender varchar(10) not null  非空约束
        );

    c.参照完整性(多表):
        表间的关系:
        一对多(用的最多)
        多对多(用的很多)
        一对一(几乎不用)

        例如:一对多(部门和员工的关系),外键约束。
        CREATE TABLE department(
            id int primary key,
            name varchar(100)
        );
        CREATE TABLE employee(
            id int primary key,
            name varchar(100),
            salary float(8,2),
            department_id int,
            CONSTRAINT department_id_fk FOREIGN KEY(department_id) REFERENCES department(id)
        );
        CONSTRAINT:约束的关键字
        FOREIGN KEY:外键
        department_id_fk:约束的名字,在数据库中这个名称必须唯一。
        department_id:外键的字段,我们通过这个字段和部门表的id关联起来。
        id:这个必须是主键

        上面是在创建表的时候就创建了外键约束,如果我们已经创建好了表,再创建约束可以:
        alter table employee add CONSTRAINT department_id_fk FOREIGN KEY(department_id) REFERENCES department(id);

        alter table employee drop foreign key department_id_fk ;删除约束

        注意:
        如果你在employee表里面添加一条数据,这个数据的department_id字段值不在department表里面id里面,就会出错。

6、多表的查询:

数据库存储数据是按照分页存储的,默认帮你建了索引,你也可以自己建立索引。
索引就类似于书的目录。
例如你有10000条记录,你需要的查找的数据在8000行,需要比较10000次才能取到你要的数据,
显然这个效率是比较低的。使用索引就比较快。

a.连接查询:
    select * from t ,t1; 查询的结果会将2个表的字段合并。 id name id name
b.子查询:
    子查询也叫嵌套查询,是指在select子句或者where子句中又嵌入select查询语句。
    select * from t1 where id=(select id from t2 where name=’张三’);
c.联合查询:
    联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,
    然后返回没有重复数据行的查询结果
    select * from t1 where price>200 UNION select * from t2 where id=1;
d.报表查询(使用数据库提供的函数):
    SELECT COUNT(*) FROM t;统计t表中共有多少条数据
    SELECT SUM(math) FROM student;统计一个班级数学总成绩
    SELECT AVG(math) FROM student;一个班级数学平均分
    SELECT MAX(chinese) FROM student;班级语文最高分

7、MySQL数据库的备份与恢复:

备份:
    在cmd窗口输入:mysqldump -uroot -proot mydb >d:\mydb.sql
    将数据库mydb备份到d盘mydb.sql
恢复:
    前提:必须先创建数据库的名称
    第一种方式,进入mysql命令行
        create database mydb_bak;
        use mydb_bak;
        source d:/mydb.sql;
        这样就可以恢复了。
    第二种方式:直接在cmd命令行
        mysql -uroot -proot mydb_bak < d:/mydb.sql
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值