数据库基本操作

            目录

1.数据库与dbms的概念

2.mysql的常用命令


 

1.数据库与dbms的概念 

数据库就是存储数据的仓库

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。

数据库软件有: oracle ,IBM的db2,sql server,Access,Mysql ....

2.mysql的常用命令

mysql启动命令和停止命令

net start mysql
net stop  mysql

登录退出命令

 mysql  -uroot -proot   账号为root 密码为root
 quit     exit    \q

show databases = 查看所有数据库

drop database + 数据库名 = 删除数据库

create database + 数据库名 = 添加数据库

create database if not exists 数据库名 = 有创建的数据库不报错

show warings 查看提示详细信息

show create database + 数据库名 = 查看数据库详细信息

alter database + 数据库名+character set + 编码(utf8)修改编码

use+数据库名 = 进入数据库,也用于切换数据库

主键=非空且唯一 not null, unique

创建表:

create table s1(
     id int PRIMARY KEY auto_increment,
     name varchar(25),
     gender boolean,
     age int,
     department varchar(20),
     salary double(7,2)
);

show tables 查看所有表

desc + 数据库名 = 查看表结构

show create table + 数据库名 + \G = 查看建表语句,\G = 格式化

alter table + 数据库名 + add + 添加的字段名 = 添加字段

alter table + 数据库名 + drop + 删除的字段名 = 删除字段

alter table + 数据库名 + modify + 字段名 + 修改的类型 = 修改字段类型

alter table s1 modify age int not null default 18 after id;

(列表名)(放在在id的后面)

alter table + 数据库名 + change + 修改的字段名 + 新字段名 + 数据类型 = 修改字段名

alter table s1 change age ages varchar(20) after id;

rename table + 数据库名 +新数据库名 = 修改数据库名

insert into + 数据库名 + (字段名) + values + (传数据) = 添加数据

insert into s1 (id, name,gender,age ,department, salary ) values(1,"tom",90,38,"java",20);

select * from + 数据库名 = 查看数据

insert into + 数据库名 + set + key = "value" ,= set插入数据

insert into s1 set name = "小明";

update + 数据库名 + set + 字段名+ where (key = "value") =修改数据

update s1 set gender = gender +10 where(name = 'xiao');

delete from + 数据库名 + where(key = "value" or key = "value") = 删除数据

delete from s1 where(id=1 or id =2);

delete from + 数据库名 = 删除所有数据

truncate table + 数据库名 = 删除表又重新建新表 速度快

新表:

CREATE TABLE ExamResult(
   id INT PRIMARY KEY  auto_increment,
   name VARCHAR (20),
   JS DOUBLE ,
   Django DOUBLE ,
   OpenStack DOUBLE
);

INSERT INTO ExamResult VALUES (1,"qian",98,98,98),
(2,"xialv",35,98,67),
(3,"alex",59,59,62),
(4,"wusir",88,89,82),
(5,"alvin",88,98,67),
(6,"yuan",86,100,55);

select distinct + 字段类型 + from + 数据库名 = 过滤重复的字段类型,保留第一个,不会修改数据库内容

select distinct name from examresult name;

select * from + 数据库名 + where(key = "value")查询名为"key"的数据

select * from examresult where(name = "yuan");

select * from examresult where(字段类型) between + 取值范围(xx and xx)

select * from examresult where(js) between 80 and 90;

select + 字段类型 + from + 数据库名 + where + 字段类型 + like "xx%" = 模糊查询

select name,js from examresult where name like "a%";
select name,js from examresult where name like "a___"; //下划线模糊查询
select name,js from examresult where js is null; //取js为空的数据
select name,js from examresult order by js; //默认降序排列
select name,js from examresult order by js desc; //降序排列
select name,js from examresult order by js asc; //升序排列
select name,js+django+openstack as zcj from examresult order by zcj desc; //总成绩
select name,js+django+openstack as cj from examresult where cj >200 order by cj desc; //程序不执行 因为运行程序的顺序先 from ==》 where ==》select

select * from + 数据库名 + group by + 数字 = 分组排序

select * from examresult group by 2; // 第二个字段类型排序
select name,sum(Django) from examresult group by name having sum(Django)>150; //再进一步过滤
select count(name) from examresult where js>60;
select avg(js) from examresult ;//求平均数 不包括null
select avg(ifnull(js,0)) from examresult;//包括null
select sum(js)/count(name) from examresult; //包括null
select max(js) from examresult; //最大值
select min(js) from examresult; //最小值
select min(ifnull(js,0)) from examresult;//最小值 包括null

select * from + 数据库名 + limit +数字 = 查看前几行

select * from examresult limit 1;
select * from examresult limit 2,2; //跳过前2行数据,显示后2行

 

import pymysql

#添加数据
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='xxx') #xxx是数据库名
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#cursor=pymysql.cursors.DictCursor是把元组类型转换成字典类型
# sql = "CREATE TABLE text(id INT ,name VARCHAR (20))"#创建表单
# cursor.execute(sql)
# cursor.execute("INSERT into xxx VALUES (1,'alex'),(2,'wpq'),(3,'qian')")#创建数据
#ss = cursor.execute("select * from xxx")#查看数据个数
#print(ss)
# print(cursor.fetchall())#查看所有数据
#print(cursor.fetchone())查看单个数据
#cursor.scroll(-1,mode='relative')  # 相对当前位置移动
#cursor.scroll(2,mode='absolute') # 相对绝对位置移动
conn.commit()#提交数据
cursor.close()
conn.close()

事务管理

事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。

start transaction;开启事务

savepoint xxx; #保存当前节点位置
rollback to xxx; #回滚到当前位置

python启动事务的方式

先在数据库创建

create database text;

use text;

create table account(
id int PRIMARY KEY auto_increment,
name varchar(25),
balance double
);

然后在PyCharm上

import pymysql

#添加数据

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='text')
cursor = conn.cursor()
try:
    insertSQL1="UPDATE account set balance=balance-30 WHERE name='qian'"
    insertSQL2="UPDATE account set balance=balance+30 WHERE name='tom'"
    cursor = conn.cursor()
    cursor.execute(insertSQL1)
    raise Exception #制造异常
    cursor.execute(insertSQL2)
    cursor.close()
    conn.commit()
except Exception as e:
    conn.rollback()
    conn.commit()
cursor.close()
conn.close()

  

  

 

posted @ 2018-09-29 16:15  等待の喵  阅读(188)  评论(0编辑  收藏  举报